]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/macros/AddTaskJetCorePP.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGJE / macros / AddTaskJetCorePP.C
1
2
3 AliAnalysisTaskJetCorePP* AddTaskJetCorePP(
4    const Char_t* branchPrefix="clustersAOD",
5    const Char_t* jetAlgo="ANTIKT",   
6    Float_t jetParameterR = 0.4,  //jet R 
7    UInt_t  trkFilterMask = 272, 
8    Float_t trackLowPtCut = 0.15,
9    const Char_t* jetbgAlgo="ANTIKT",    //background jet algo
10    Float_t bgjetParameterR = 0.3,  //R of jet to be removed while bg calc 
11    Float_t bgMaxJetPt = 8.0, //max jet pt to be accepted to bg 
12    Int_t  rndTrials = 2000, //number of trials to get jet free cell area
13    Float_t jetFreeAreaFrac = 0.75, //cell area free of jets
14    Float_t bgConeR = 0.4,  //R of perp cone jet R 
15    Int_t   collisionSystem = 0, //pp=0, pPb=1
16    Int_t   offlineTriggerMask=AliVEvent::kMB, //MinBias=0 
17    Int_t   minContribVtx = 1,
18    Float_t vtxZMin = -10.0,
19    Float_t vtxZMax = 10.0,
20    Float_t centMin = 0.0,
21    Float_t centMax = 100.0,
22    Float_t triggerEtaCut = 0.9,
23    Float_t trackEtaCut = 0.9,
24    const Char_t* nonStdFile="",
25    const Char_t* mcFullFlag="",  // real="", all jets= "MC"    
26    const Char_t* mcChargFlag="",  // real="", charged jets = "MC2" 
27    Bool_t bfillrespmx=0,  // 0=dont fill resp mx histos, 1=fill histos
28    Bool_t bDiceEff=0,  // 0=leave efficiency as it is,  1= reduce efficiency by constant amount via SetFixedEfficiency
29    Bool_t bMomSmear=0,  // 0=leave efficiency as it is,  1= reduce efficiency by constant amount via SetFixedEfficiency
30    Bool_t bDoubleBinning=0,  // 0= 2GeV bin size  1= 1GeV/bin size
31    Bool_t bUseExchContainer=0, //
32    Int_t triggerType=0,  //0=single incl trigger, 1=leading track, 2=hadron pt>10 
33    Int_t evtRangeLow=0,   //last digit of range of ESD event number
34    Int_t evtRangeHigh=9,  //first digit of range of ESD event number
35    Float_t trigRangeLow=0,  //trigger pT low bin boreder works with triggType=0
36    Float_t trigRangeHigh=50  //trigger pT high border works with triggType=0
37   ){ 
38    Printf("adding task jet response\n");
39
40    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
41    if(!mgr){
42       ::Error("AddTaskJetCorePP", "No analysis manager to connect to.");
43       return NULL;
44    }
45    if(!mgr->GetInputEventHandler()){
46       ::Error("AddTaskJetCorePP", "This task requires an input event handler.");
47       return NULL;
48    }
49
50    Float_t jetEtaMin = -0.9 + jetParameterR;
51    Float_t jetEtaMax =  0.9 - jetParameterR; 
52     
53    TString analBranch="";
54    TString analBranchBg="";   //jet to be removed from bg 
55    TString analBranchFullMC="";          //full jets MC to be used with charged jets MC 
56    TString analBranchChargMC="";         //charged jets
57    TString analBranchBgChargMC="";       //charged jets background 
58    TString analBranchKine="";            //kine jets
59    TString analBranchBgKine="";          //kine jets background 
60
61    TString mcFullSuffix="";    //MC = all jets
62    TString mcChargSuffix="";  //MC2= charged jets,  MC = all jets
63  
64
65
66    TString bpfx(branchPrefix);
67    TString stJetAlgo(jetAlgo);
68    TString stJetBgAlgo(jetbgAlgo);
69    stJetAlgo.ToUpper();
70    stJetBgAlgo.ToUpper();
71
72    TString jet="";
73    TString jetbg="";
74    TString otherparams="";
75    mcFullSuffix=Form("%s",mcFullFlag);    //MC = all jets
76    mcChargSuffix=Form("%s",mcChargFlag);  //MC2= charged jets,  MC = all jets
77
78
79    jet   = jet   + "_" + stJetAlgo   + Form("%02d",(Int_t) (10*jetParameterR));  // _ANTIKT02
80    jetbg = jetbg + "_" + stJetBgAlgo + Form("%02d",(Int_t) (10*bgjetParameterR));
81  
82    if(!bpfx.Contains("KINE")){
83
84       analBranch   = bpfx;
85       analBranchBg = bpfx; 
86  
87       otherparams = otherparams + "_B0"; //bg mode
88       otherparams = otherparams + Form("_Filter%05d",(UInt_t) trkFilterMask);
89       otherparams = otherparams + Form("_Cut%05d",(Int_t) (1000*trackLowPtCut));
90
91       if(analBranch.BeginsWith("clustersAOD")){
92          otherparams = otherparams + Form("_Skip%02d",0);
93       }
94   
95       TString  smearMC  = (!bMomSmear) ?  "" : mcChargSuffix; //smearing affects MC branch 
96       analBranch   = analBranch   + smearMC + jet   + otherparams; //antikt jet 
97       analBranchBg = analBranchBg + smearMC + jetbg + otherparams; //kt bg jet
98
99       if(bDiceEff || bMomSmear){ //dicing efficiency relates rec only
100          analBranch   = analBranch   + Form("Detector%d%dFr0",(Int_t) bDiceEff,(Int_t) bMomSmear); //dice=1, smear=0, change eff fraction =0
101          analBranchBg = analBranchBg + Form("Detector%d%dFr0",(Int_t) bDiceEff,(Int_t) bMomSmear); 
102       }
103
104       //clustersAOD_ANTIKT04_B0_Filter00272_Cut00150_Skip00   
105       //clustersAOD_ANTIKT04_B0_Filter00272_Cut00150_Skip00_Detector10Fr0   
106       //Skip00 none of the most energetic jets is ommited
107       //Cut00150  pT min cut on track
108       //Filter00272
109    
110    
111       if(mcChargSuffix.Length()>0 && mcChargSuffix=="MC2"){  //charged jets generator level
112          analBranchChargMC   = bpfx + mcChargSuffix + jet   + otherparams; 
113          analBranchBgChargMC = bpfx + mcChargSuffix + jetbg + otherparams; 
114       }
115    
116       if(mcFullSuffix.Length()>0 && mcFullSuffix=="MC"){ //full jets generator level
117          analBranchFullMC    = bpfx + mcFullSuffix  + jet   + otherparams; 
118       }
119    }else{ //KINE JETS
120       //clustersKINECHARGED_ANTIKT02_Cut00150
121       otherparams = otherparams + Form("_Cut%05d",TMath::Nint(1000*trackLowPtCut));
122
123       analBranchKine   = analBranchKine   + bpfx + jet   + otherparams;            
124       analBranchBgKine = analBranchBgKine + bpfx + jetbg + otherparams;         
125    }
126
127    TString analBranchTmp = analBranch;
128
129    if(bpfx.Contains("KINE")){
130       analBranchTmp=analBranchKine;
131    }
132    AliAnalysisTaskJetCorePP *task = new AliAnalysisTaskJetCorePP(Form("JetCorePP_%s_%s_%d",analBranchTmp.Data(), mcChargSuffix.Data(), offlineTriggerMask));
133
134    task->SetBranchName(analBranch.Data());
135    task->SetBranchNameFullMC(analBranchFullMC.Data());
136    task->SetBranchNameChargMC(analBranchChargMC.Data());
137    task->SetBranchNameKine(analBranchKine.Data());
138    task->SetBranchNameBg(analBranchBg.Data()); //kine jets
139    task->SetBranchNameBgChargMC(analBranchBgChargMC.Data()); //jet to be removed from bg 
140    task->SetBranchNameBgKine(analBranchBgKine.Data()); //kine jets
141    task->SetNonStdFile(nonStdFile);
142    task->SetSystem(collisionSystem); 
143    task->SetJetR(jetParameterR);
144    task->SetBgJetR(bgjetParameterR);
145    task->SetBgMaxJetPt(bgMaxJetPt);
146    task->SetRndTrials(rndTrials);
147    task->SetFreeAreaFrac(jetFreeAreaFrac);
148    task->SetBgConeR(bgConeR); 
149    task->SetOfflineTrgMask(offlineTriggerMask);
150    task->SetMinContribVtx(minContribVtx);
151    task->SetVtxZMin(vtxZMin);
152    task->SetVtxZMax(vtxZMax);
153    task->SetFilterMask(trkFilterMask);
154    task->SetCentMin(centMin);
155    task->SetCentMax(centMax);
156    task->SetJetEtaMin(jetEtaMin);
157    task->SetJetEtaMax(jetEtaMax);
158    task->SetTriggerEtaCut(triggerEtaCut);
159    task->SetTrackEtaCut(trackEtaCut);
160    task->SetTrackLowPtCut(trackLowPtCut);
161    task->SetTriggerType(triggerType); 
162    task->SetEventNumberRangeLow(evtRangeLow);
163    task->SetEventNumberRangeHigh(evtRangeHigh);
164    task->SetTriggerPtRangeLow(trigRangeLow);
165    task->SetTriggerPtRangeHigh(trigRangeHigh); 
166    task->SetFillResponseMatrix(bfillrespmx);
167    task->SetBinning(bDoubleBinning);
168    task->SetUseExchangeContainerInput(bUseExchContainer);
169
170    task->SetDebugLevel(0); //No debug messages 0
171    mgr->AddTask(task);
172
173    //E=  range of last two decimal numbers in event numbers
174    //Ptt range of the cosidered trigger bin
175    AliAnalysisDataContainer *coutputJetCorePP = mgr->CreateContainer(
176       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), 
177       TList::Class(),
178       AliAnalysisManager::kOutputContainer,
179       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)
180    );
181
182    mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
183    //FK//mgr->ConnectOutput(task, 0, mgr->GetCommonOutputContainer());
184
185    if(bUseExchContainer){
186
187       if(analBranchKine.Length()>0){ //kine jets = input slot 1
188          AliAnalysisDataContainer* containerKineJets = (AliAnalysisDataContainer*)mgr->GetContainers()->FindObject(analBranchKine.Data());
189         mgr->ConnectInput(task, 1, containerKineJets); 
190       }
191       if(analBranchBgKine.Length()>0){ //kine jets to be removed from bg = input slot 2
192          AliAnalysisDataContainer* containerKineJetsBg = (AliAnalysisDataContainer*)mgr->GetContainers()->FindObject(analBranchBgKine.Data());
193          mgr->ConnectInput(task, 2, containerKineJetsBg);  
194       }
195    }
196
197    mgr->ConnectOutput(task, 1, coutputJetCorePP);
198    return task;
199 }