ROOT logo


AliAnalysisTaskJetCorePP* AddTaskJetCorePP(
   const Char_t* branchPrefix="clustersAOD",
   const Char_t* jetAlgo="ANTIKT",   
   Float_t jetParameterR = 0.4,  //jet R 
   UInt_t  trkFilterMask = 272, 
   Float_t trackLowPtCut = 0.15,
   const Char_t* jetbgAlgo="ANTIKT",    //background jet algo
   Float_t bgjetParameterR = 0.3,  //R of jet to be removed while bg calc 
   Float_t bgMaxJetPt = 8.0, //max jet pt to be accepted to bg 
   Int_t  rndTrials = 2000, //number of trials to get jet free cell area
   Float_t jetFreeAreaFrac = 0.75, //cell area free of jets
   Float_t bgConeR = 0.4,  //R of perp cone jet R 
   Int_t   collisionSystem = 0, //pp=0, pPb=1
   Int_t   offlineTriggerMask=AliVEvent::kMB, //MinBias=0 
   Int_t   minContribVtx = 1,
   Float_t vtxZMin = -10.0,
   Float_t vtxZMax = 10.0,
   Float_t centMin = 0.0,
   Float_t centMax = 100.0,
   Float_t triggerEtaCut = 0.9,
   Float_t trackEtaCut = 0.9,
   const Char_t* nonStdFile="",
   const Char_t* mcFullFlag="",  // real="", all jets= "MC"    
   const Char_t* mcChargFlag="",  // real="", charged jets = "MC2" 
   Bool_t bfillrespmx=0,  // 0=dont fill resp mx histos, 1=fill histos
   Bool_t bDiceEff=0,  // 0=leave efficiency as it is,  1= reduce efficiency by constant amount via SetFixedEfficiency
   Bool_t bMomSmear=0,  // 0=leave efficiency as it is,  1= reduce efficiency by constant amount via SetFixedEfficiency
   Bool_t bDoubleBinning=0,  // 0= 2GeV bin size  1= 1GeV/bin size
   Bool_t bUseExchContainer=0, //
   Int_t triggerType=0,  //0=single incl trigger, 1=leading track, 2=hadron pt>10 
   Int_t evtRangeLow=0,   //last digit of range of ESD event number
   Int_t evtRangeHigh=9,  //first digit of range of ESD event number
   Float_t trigRangeLow=0,  //trigger pT low bin boreder works with triggType=0
   Float_t trigRangeHigh=50  //trigger pT high border works with triggType=0
  ){ 
   Printf("adding task jet response\n");

   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   if(!mgr){
      ::Error("AddTaskJetCorePP", "No analysis manager to connect to.");
      return NULL;
   }
   if(!mgr->GetInputEventHandler()){
      ::Error("AddTaskJetCorePP", "This task requires an input event handler.");
      return NULL;
   }

   Float_t jetEtaMin = -0.9 + jetParameterR;
   Float_t jetEtaMax =  0.9 - jetParameterR; 
    
   TString analBranch="";
   TString analBranchBg="";   //jet to be removed from bg 
   TString analBranchFullMC="";          //full jets MC to be used with charged jets MC 
   TString analBranchChargMC="";         //charged jets
   TString analBranchBgChargMC="";       //charged jets background 
   TString analBranchKine="";            //kine jets
   TString analBranchBgKine="";          //kine jets background 

   TString mcFullSuffix="";    //MC = all jets
   TString mcChargSuffix="";  //MC2= charged jets,  MC = all jets
 


   TString bpfx(branchPrefix);
   TString stJetAlgo(jetAlgo);
   TString stJetBgAlgo(jetbgAlgo);
   stJetAlgo.ToUpper();
   stJetBgAlgo.ToUpper();

   TString jet="";
   TString jetbg="";
   TString otherparams="";
   mcFullSuffix=Form("%s",mcFullFlag);    //MC = all jets
   mcChargSuffix=Form("%s",mcChargFlag);  //MC2= charged jets,  MC = all jets


   jet   = jet   + "_" + stJetAlgo   + Form("%02d",(Int_t) (10*jetParameterR));  // _ANTIKT02
   jetbg = jetbg + "_" + stJetBgAlgo + Form("%02d",(Int_t) (10*bgjetParameterR));
 
   if(!bpfx.Contains("KINE")){

      analBranch   = bpfx;
      analBranchBg = bpfx; 
 
      otherparams = otherparams + "_B0"; //bg mode
      otherparams = otherparams + Form("_Filter%05d",(UInt_t) trkFilterMask);
      otherparams = otherparams + Form("_Cut%05d",(Int_t) (1000*trackLowPtCut));

      if(analBranch.BeginsWith("clustersAOD")){
         otherparams = otherparams + Form("_Skip%02d",0);
      }
  
      TString  smearMC  = (!bMomSmear) ?  "" : mcChargSuffix; //smearing affects MC branch 
      analBranch   = analBranch   + smearMC + jet   + otherparams; //antikt jet 
      analBranchBg = analBranchBg + smearMC + jetbg + otherparams; //kt bg jet

      if(bDiceEff || bMomSmear){ //dicing efficiency relates rec only
         analBranch   = analBranch   + Form("Detector%d%dFr0",(Int_t) bDiceEff,(Int_t) bMomSmear); //dice=1, smear=0, change eff fraction =0
         analBranchBg = analBranchBg + Form("Detector%d%dFr0",(Int_t) bDiceEff,(Int_t) bMomSmear); 
      }

      //clustersAOD_ANTIKT04_B0_Filter00272_Cut00150_Skip00   
      //clustersAOD_ANTIKT04_B0_Filter00272_Cut00150_Skip00_Detector10Fr0   
      //Skip00 none of the most energetic jets is ommited
      //Cut00150  pT min cut on track
      //Filter00272
   
   
      if(mcChargSuffix.Length()>0 && mcChargSuffix=="MC2"){  //charged jets generator level
         analBranchChargMC   = bpfx + mcChargSuffix + jet   + otherparams; 
         analBranchBgChargMC = bpfx + mcChargSuffix + jetbg + otherparams; 
      }
   
      if(mcFullSuffix.Length()>0 && mcFullSuffix=="MC"){ //full jets generator level
         analBranchFullMC    = bpfx + mcFullSuffix  + jet   + otherparams; 
      }
   }else{ //KINE JETS
      //clustersKINECHARGED_ANTIKT02_Cut00150
      otherparams = otherparams + Form("_Cut%05d",TMath::Nint(1000*trackLowPtCut));

      analBranchKine   = analBranchKine   + bpfx + jet   + otherparams;            
      analBranchBgKine = analBranchBgKine + bpfx + jetbg + otherparams;         
   }

   TString analBranchTmp = analBranch;

   if(bpfx.Contains("KINE")){
      analBranchTmp=analBranchKine;
   }
   AliAnalysisTaskJetCorePP *task = new AliAnalysisTaskJetCorePP(Form("JetCorePP_%s_%s_%d",analBranchTmp.Data(), mcChargSuffix.Data(), offlineTriggerMask));

   task->SetBranchName(analBranch.Data());
   task->SetBranchNameFullMC(analBranchFullMC.Data());
   task->SetBranchNameChargMC(analBranchChargMC.Data());
   task->SetBranchNameKine(analBranchKine.Data());
   task->SetBranchNameBg(analBranchBg.Data()); //kine jets
   task->SetBranchNameBgChargMC(analBranchBgChargMC.Data()); //jet to be removed from bg 
   task->SetBranchNameBgKine(analBranchBgKine.Data()); //kine jets
   task->SetNonStdFile(nonStdFile);
   task->SetSystem(collisionSystem); 
   task->SetJetR(jetParameterR);
   task->SetBgJetR(bgjetParameterR);
   task->SetBgMaxJetPt(bgMaxJetPt);
   task->SetRndTrials(rndTrials);
   task->SetFreeAreaFrac(jetFreeAreaFrac);
   task->SetBgConeR(bgConeR); 
   task->SetOfflineTrgMask(offlineTriggerMask);
   task->SetMinContribVtx(minContribVtx);
   task->SetVtxZMin(vtxZMin);
   task->SetVtxZMax(vtxZMax);
   task->SetFilterMask(trkFilterMask);
   task->SetCentMin(centMin);
   task->SetCentMax(centMax);
   task->SetJetEtaMin(jetEtaMin);
   task->SetJetEtaMax(jetEtaMax);
   task->SetTriggerEtaCut(triggerEtaCut);
   task->SetTrackEtaCut(trackEtaCut);
   task->SetTrackLowPtCut(trackLowPtCut);
   task->SetTriggerType(triggerType); 
   task->SetEventNumberRangeLow(evtRangeLow);
   task->SetEventNumberRangeHigh(evtRangeHigh);
   task->SetTriggerPtRangeLow(trigRangeLow);
   task->SetTriggerPtRangeHigh(trigRangeHigh); 
   task->SetFillResponseMatrix(bfillrespmx);
   task->SetBinning(bDoubleBinning);
   task->SetUseExchangeContainerInput(bUseExchContainer);

   task->SetDebugLevel(0); //No debug messages 0
   mgr->AddTask(task);

   //E=  range of last two decimal numbers in event numbers
   //Ptt range of the cosidered trigger bin
   AliAnalysisDataContainer *coutputJetCorePP = mgr->CreateContainer(
      Form("pwgjejetcorepp_%s_%s%02d_%s_%d_T%d_E%d_%d_Ptt%.0f_%.0f",analBranchTmp.Data(),jetbgAlgo,TMath::Nint(10*bgjetParameterR),mcChargSuffix.Data(),offlineTriggerMask,triggerType,evtRangeLow,evtRangeHigh,trigRangeLow,trigRangeHigh), 
      TList::Class(),
      AliAnalysisManager::kOutputContainer,
      Form("%s:PWGJE_jetcorepp_%s_%s%02d_%s_%d_T%d_E%d_%d_Ptt%.0f_%.0f",AliAnalysisManager::GetCommonFileName(),analBranchTmp.Data(),jetbgAlgo,TMath::Nint(10*bgjetParameterR),mcChargSuffix.Data(),offlineTriggerMask,triggerType,evtRangeLow,evtRangeHigh,trigRangeLow,trigRangeHigh)
   );

   mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
   //FK//mgr->ConnectOutput(task, 0, mgr->GetCommonOutputContainer());

   if(bUseExchContainer){

      if(analBranchKine.Length()>0){ //kine jets = input slot 1
         AliAnalysisDataContainer* containerKineJets = (AliAnalysisDataContainer*)mgr->GetContainers()->FindObject(analBranchKine.Data());
        mgr->ConnectInput(task, 1, containerKineJets); 
      }
      if(analBranchBgKine.Length()>0){ //kine jets to be removed from bg = input slot 2
         AliAnalysisDataContainer* containerKineJetsBg = (AliAnalysisDataContainer*)mgr->GetContainers()->FindObject(analBranchBgKine.Data());
         mgr->ConnectInput(task, 2, containerKineJetsBg);  
      }
   }

   mgr->ConnectOutput(task, 1, coutputJetCorePP);
   return task;
}
 AddTaskJetCorePP.C:1
 AddTaskJetCorePP.C:2
 AddTaskJetCorePP.C:3
 AddTaskJetCorePP.C:4
 AddTaskJetCorePP.C:5
 AddTaskJetCorePP.C:6
 AddTaskJetCorePP.C:7
 AddTaskJetCorePP.C:8
 AddTaskJetCorePP.C:9
 AddTaskJetCorePP.C:10
 AddTaskJetCorePP.C:11
 AddTaskJetCorePP.C:12
 AddTaskJetCorePP.C:13
 AddTaskJetCorePP.C:14
 AddTaskJetCorePP.C:15
 AddTaskJetCorePP.C:16
 AddTaskJetCorePP.C:17
 AddTaskJetCorePP.C:18
 AddTaskJetCorePP.C:19
 AddTaskJetCorePP.C:20
 AddTaskJetCorePP.C:21
 AddTaskJetCorePP.C:22
 AddTaskJetCorePP.C:23
 AddTaskJetCorePP.C:24
 AddTaskJetCorePP.C:25
 AddTaskJetCorePP.C:26
 AddTaskJetCorePP.C:27
 AddTaskJetCorePP.C:28
 AddTaskJetCorePP.C:29
 AddTaskJetCorePP.C:30
 AddTaskJetCorePP.C:31
 AddTaskJetCorePP.C:32
 AddTaskJetCorePP.C:33
 AddTaskJetCorePP.C:34
 AddTaskJetCorePP.C:35
 AddTaskJetCorePP.C:36
 AddTaskJetCorePP.C:37
 AddTaskJetCorePP.C:38
 AddTaskJetCorePP.C:39
 AddTaskJetCorePP.C:40
 AddTaskJetCorePP.C:41
 AddTaskJetCorePP.C:42
 AddTaskJetCorePP.C:43
 AddTaskJetCorePP.C:44
 AddTaskJetCorePP.C:45
 AddTaskJetCorePP.C:46
 AddTaskJetCorePP.C:47
 AddTaskJetCorePP.C:48
 AddTaskJetCorePP.C:49
 AddTaskJetCorePP.C:50
 AddTaskJetCorePP.C:51
 AddTaskJetCorePP.C:52
 AddTaskJetCorePP.C:53
 AddTaskJetCorePP.C:54
 AddTaskJetCorePP.C:55
 AddTaskJetCorePP.C:56
 AddTaskJetCorePP.C:57
 AddTaskJetCorePP.C:58
 AddTaskJetCorePP.C:59
 AddTaskJetCorePP.C:60
 AddTaskJetCorePP.C:61
 AddTaskJetCorePP.C:62
 AddTaskJetCorePP.C:63
 AddTaskJetCorePP.C:64
 AddTaskJetCorePP.C:65
 AddTaskJetCorePP.C:66
 AddTaskJetCorePP.C:67
 AddTaskJetCorePP.C:68
 AddTaskJetCorePP.C:69
 AddTaskJetCorePP.C:70
 AddTaskJetCorePP.C:71
 AddTaskJetCorePP.C:72
 AddTaskJetCorePP.C:73
 AddTaskJetCorePP.C:74
 AddTaskJetCorePP.C:75
 AddTaskJetCorePP.C:76
 AddTaskJetCorePP.C:77
 AddTaskJetCorePP.C:78
 AddTaskJetCorePP.C:79
 AddTaskJetCorePP.C:80
 AddTaskJetCorePP.C:81
 AddTaskJetCorePP.C:82
 AddTaskJetCorePP.C:83
 AddTaskJetCorePP.C:84
 AddTaskJetCorePP.C:85
 AddTaskJetCorePP.C:86
 AddTaskJetCorePP.C:87
 AddTaskJetCorePP.C:88
 AddTaskJetCorePP.C:89
 AddTaskJetCorePP.C:90
 AddTaskJetCorePP.C:91
 AddTaskJetCorePP.C:92
 AddTaskJetCorePP.C:93
 AddTaskJetCorePP.C:94
 AddTaskJetCorePP.C:95
 AddTaskJetCorePP.C:96
 AddTaskJetCorePP.C:97
 AddTaskJetCorePP.C:98
 AddTaskJetCorePP.C:99
 AddTaskJetCorePP.C:100
 AddTaskJetCorePP.C:101
 AddTaskJetCorePP.C:102
 AddTaskJetCorePP.C:103
 AddTaskJetCorePP.C:104
 AddTaskJetCorePP.C:105
 AddTaskJetCorePP.C:106
 AddTaskJetCorePP.C:107
 AddTaskJetCorePP.C:108
 AddTaskJetCorePP.C:109
 AddTaskJetCorePP.C:110
 AddTaskJetCorePP.C:111
 AddTaskJetCorePP.C:112
 AddTaskJetCorePP.C:113
 AddTaskJetCorePP.C:114
 AddTaskJetCorePP.C:115
 AddTaskJetCorePP.C:116
 AddTaskJetCorePP.C:117
 AddTaskJetCorePP.C:118
 AddTaskJetCorePP.C:119
 AddTaskJetCorePP.C:120
 AddTaskJetCorePP.C:121
 AddTaskJetCorePP.C:122
 AddTaskJetCorePP.C:123
 AddTaskJetCorePP.C:124
 AddTaskJetCorePP.C:125
 AddTaskJetCorePP.C:126
 AddTaskJetCorePP.C:127
 AddTaskJetCorePP.C:128
 AddTaskJetCorePP.C:129
 AddTaskJetCorePP.C:130
 AddTaskJetCorePP.C:131
 AddTaskJetCorePP.C:132
 AddTaskJetCorePP.C:133
 AddTaskJetCorePP.C:134
 AddTaskJetCorePP.C:135
 AddTaskJetCorePP.C:136
 AddTaskJetCorePP.C:137
 AddTaskJetCorePP.C:138
 AddTaskJetCorePP.C:139
 AddTaskJetCorePP.C:140
 AddTaskJetCorePP.C:141
 AddTaskJetCorePP.C:142
 AddTaskJetCorePP.C:143
 AddTaskJetCorePP.C:144
 AddTaskJetCorePP.C:145
 AddTaskJetCorePP.C:146
 AddTaskJetCorePP.C:147
 AddTaskJetCorePP.C:148
 AddTaskJetCorePP.C:149
 AddTaskJetCorePP.C:150
 AddTaskJetCorePP.C:151
 AddTaskJetCorePP.C:152
 AddTaskJetCorePP.C:153
 AddTaskJetCorePP.C:154
 AddTaskJetCorePP.C:155
 AddTaskJetCorePP.C:156
 AddTaskJetCorePP.C:157
 AddTaskJetCorePP.C:158
 AddTaskJetCorePP.C:159
 AddTaskJetCorePP.C:160
 AddTaskJetCorePP.C:161
 AddTaskJetCorePP.C:162
 AddTaskJetCorePP.C:163
 AddTaskJetCorePP.C:164
 AddTaskJetCorePP.C:165
 AddTaskJetCorePP.C:166
 AddTaskJetCorePP.C:167
 AddTaskJetCorePP.C:168
 AddTaskJetCorePP.C:169
 AddTaskJetCorePP.C:170
 AddTaskJetCorePP.C:171
 AddTaskJetCorePP.C:172
 AddTaskJetCorePP.C:173
 AddTaskJetCorePP.C:174
 AddTaskJetCorePP.C:175
 AddTaskJetCorePP.C:176
 AddTaskJetCorePP.C:177
 AddTaskJetCorePP.C:178
 AddTaskJetCorePP.C:179
 AddTaskJetCorePP.C:180
 AddTaskJetCorePP.C:181
 AddTaskJetCorePP.C:182
 AddTaskJetCorePP.C:183
 AddTaskJetCorePP.C:184
 AddTaskJetCorePP.C:185
 AddTaskJetCorePP.C:186
 AddTaskJetCorePP.C:187
 AddTaskJetCorePP.C:188
 AddTaskJetCorePP.C:189
 AddTaskJetCorePP.C:190
 AddTaskJetCorePP.C:191
 AddTaskJetCorePP.C:192
 AddTaskJetCorePP.C:193
 AddTaskJetCorePP.C:194
 AddTaskJetCorePP.C:195
 AddTaskJetCorePP.C:196
 AddTaskJetCorePP.C:197
 AddTaskJetCorePP.C:198
 AddTaskJetCorePP.C:199
 AddTaskJetCorePP.C:200