]> 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    Int_t triggerType=0,  //0=single incl trigger, 1=leading track, 2=hadron pt>10 
30    Int_t evtRangeLow=0,   //last digit of range of ESD event number
31    Int_t evtRangeHigh=9,  //first digit of range of ESD event number
32    Float_t trigRangeLow=0,  //trigger pT low bin boreder works with triggType=0
33    Float_t trigRangeHigh=50  //trigger pT high border works with triggType=0
34   ){ 
35
36    Printf("adding task jet response\n");
37
38    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
39    if(!mgr){
40       ::Error("AddTaskJetCorePP", "No analysis manager to connect to.");
41       return NULL;
42    }
43    if(!mgr->GetInputEventHandler()){
44       ::Error("AddTaskJetCorePP", "This task requires an input event handler.");
45       return NULL;
46    }
47
48    Float_t jetEtaMin = -0.9 + jetParameterR;
49    Float_t jetEtaMax =  0.9 - jetParameterR; 
50     
51    TString analBranch(branchPrefix);
52    TString analBranchBg(branchPrefix);  // kT bg jets
53    TString analBranchFullMC="";             //full jets MC to be used with charged jets MC 
54    TString analBranchChargMC="";            //charged jets
55    TString analBranchBgChargMC="";          //charged jets kt background 
56
57
58    TString stJetAlgo(jetAlgo);
59    TString stJetBgAlgo(jetbgAlgo);
60    stJetAlgo.ToUpper();
61    stJetBgAlgo.ToUpper();
62
63  
64    TString jet="";
65    TString jetbg="";
66    TString otherparams="";
67    jet   = jet   + "_" + stJetAlgo   + Form("%02d",(Int_t) (10*jetParameterR));
68    jetbg = jetbg + "_" + stJetBgAlgo + Form("%02d",(Int_t) (10*bgjetParameterR));
69    
70    otherparams = otherparams + "_B0"; //bg mode
71    otherparams = otherparams + Form("_Filter%05d",(UInt_t) trkFilterMask);
72    otherparams = otherparams + Form("_Cut%05d",(Int_t) (1000*trackLowPtCut));
73
74    if(analBranch.BeginsWith("clustersAOD")){
75       otherparams = otherparams + Form("_Skip%02d",0);
76    }
77    
78    analBranch   = analBranch   + jet   + otherparams; //antikt jet 
79    analBranchBg = analBranchBg + jetbg + otherparams; //kt bg jet
80
81    if(bDiceEff){ //dicing efficiency relates rec only
82       analBranch   = analBranch   + "Detector10Fr0"; //dice=1, smear=0, change eff fraction =0
83       analBranchBg = analBranchBg + "Detector10Fr0"; 
84    }
85
86    //clustersAOD_ANTIKT04_B0_Filter00272_Cut00150_Skip00   
87    //clustersAOD_ANTIKT04_B0_Filter00272_Cut00150_Skip00_Detector10Fr0   
88    //Skip00 none of the most energetic jets is ommited
89    //Cut00150  pT min cut on track
90    //Filter00272
91
92    TString mcFullSuffix(mcFullFlag);    //MC = all jets
93    TString mcChargSuffix(mcChargFlag);  //MC2= charged jets,  MC = all jets
94
95    if(mcChargSuffix.Length()>0 && mcChargSuffix=="MC2"){  //charged jets generator level
96       analBranchChargMC   = branchPrefix + mcChargSuffix + jet   + otherparams; 
97       analBranchBgChargMC = branchPrefix + mcChargSuffix + jetbg + otherparams; 
98    }
99
100    if(mcFullSuffix.Length()>0 && mcFullSuffix=="MC"){ //full jets generator level
101       analBranchFullMC    = branchPrefix + mcFullSuffix  + jet   + otherparams; 
102    }
103
104
105  
106    AliAnalysisTaskJetCorePP *task = new AliAnalysisTaskJetCorePP(Form("JetCorePP_%s_%s_%d",analBranch.Data(), mcChargSuffix.Data(), offlineTriggerMask));
107
108    task->SetBranchName(analBranch.Data());
109    task->SetBranchNameFullMC(analBranchFullMC.Data());
110    task->SetBranchNameChargMC(analBranchChargMC.Data());
111    task->SetBranchNameBg(analBranchBg.Data()); //kt bg jets
112    task->SetBranchNameBgChargMC(analBranchBgChargMC.Data()); //kt bg jets
113    task->SetNonStdFile(nonStdFile);
114    task->SetSystem(collisionSystem); 
115    task->SetJetR(jetParameterR);
116    task->SetBgJetR(bgjetParameterR);
117    task->SetBgMaxJetPt(bgMaxJetPt);
118    task->SetRndTrials(rndTrials);
119    task->SetFreeAreaFrac(jetFreeAreaFrac);
120    task->SetBgConeR(bgConeR); 
121    task->SetOfflineTrgMask(offlineTriggerMask);
122    task->SetMinContribVtx(minContribVtx);
123    task->SetVtxZMin(vtxZMin);
124    task->SetVtxZMax(vtxZMax);
125    task->SetFilterMask(trkFilterMask);
126    task->SetCentMin(centMin);
127    task->SetCentMax(centMax);
128    task->SetJetEtaMin(jetEtaMin);
129    task->SetJetEtaMax(jetEtaMax);
130    task->SetTriggerEtaCut(triggerEtaCut);
131    task->SetTrackEtaCut(trackEtaCut);
132    task->SetTrackLowPtCut(trackLowPtCut);
133    task->SetTriggerType(triggerType); 
134    task->SetEventNumberRangeLow(evtRangeLow);
135    task->SetEventNumberRangeHigh(evtRangeHigh);
136    task->SetTriggerPtRangeLow(trigRangeLow);
137    task->SetTriggerPtRangeHigh(trigRangeHigh); 
138    task->SetFillResponseMatrix(bfillrespmx);
139
140    task->SetDebugLevel(0); //No debug messages 0
141    mgr->AddTask(task);
142    //E=  range of last two decimal numbers in event numbers
143    //Ptt range of the cosidered trigger bin
144    AliAnalysisDataContainer *coutputJetCorePP = mgr->CreateContainer(
145       Form("pwgjejetcorepp_%s_%s%02d_%s_%d_T%d_E%d_%d_Ptt%.0f_%.0f",analBranch.Data(),jetbgAlgo,TMath::Nint(10*bgjetParameterR),mcChargSuffix.Data(),offlineTriggerMask,triggerType,evtRangeLow,evtRangeHigh,trigRangeLow,trigRangeHigh), 
146       TList::Class(),
147       AliAnalysisManager::kOutputContainer,
148       Form("%s:PWGJE_jetcorepp_%s_%s%02d_%s_%d_T%d_E%d_%d_Ptt%.0f_%.0f",AliAnalysisManager::GetCommonFileName(),analBranch.Data(),jetbgAlgo,TMath::Nint(10*bgjetParameterR),mcChargSuffix.Data(),offlineTriggerMask,triggerType,evtRangeLow,evtRangeHigh,trigRangeLow,trigRangeHigh)
149    );
150
151    mgr->ConnectInput (task, 0, mgr->GetCommonInputContainer());
152    mgr->ConnectOutput(task, 0, mgr->GetCommonOutputContainer());
153    mgr->ConnectOutput(task, 1, coutputJetCorePP);
154
155    return task;
156 }