]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/muon/AddTaskMuMu.C
Fix Coverity 24835
[u/mrichter/AliRoot.git] / PWG / muon / AddTaskMuMu.C
CommitLineData
764cabcb 1///
5376e016 2/// Configuration example of a task to get invariant mass spectrum of dimuons
764cabcb 3///
5376e016 4/// \author: L. Aphecetche (Subatech) (laurent.aphecetche - at - subatech.in2p3.fr)
764cabcb 5///
6
7b303c5a 7AliAnalysisTask* AddTaskMuMu(const char* outputname,
5376e016
CP
8 TList* triggerClassesToConsider,
9 const char* beamYear,
10 Bool_t simulations)
764cabcb 11{
12 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
13 if (!mgr) {
14 ::Error("AddTaskMuMu", "No analysis manager to connect to.");
15 return NULL;
16 }
17
18 // Check the analysis type using the event handlers connected to the analysis manager.
19 //==============================================================================
20 if (!mgr->GetInputEventHandler()) {
21 ::Error("AddTaskMuMu", "This task requires an input event handler");
22 return NULL;
23 }
24 TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
7b303c5a 25 cout << "inputDataType=" << inputDataType.Data() << endl;
764cabcb 26
27 // Configure analysis
28 //===========================================================================
5376e016 29
7b303c5a 30 if (simulations && triggerClassesToConsider )
31 {
5376e016
CP
32// triggerClassesToConsider->Add(new TObjString("CMULLO-B-NOPF-MUON"));
33// triggerClassesToConsider->Add(new TObjString("CMSNGL-B-NOPF-MUON"));
34 triggerClassesToConsider->Add(new TObjString("ANY"));
35
36// triggerClassesToConsider->Add(new TObjString("MB1"));
37// triggerClassesToConsider->Add(new TObjString("C0T0A"));
38
39 // triggerClassesToConsider->Add(new TObjString("MULow"));
40// triggerClassesToConsider->Add(new TObjString("V0L"));
41// triggerClassesToConsider->Add(new TObjString("V0R"));
42//
43// for dpmjet simulations (at least) we have the following "triggers" :
44// C0T0A,C0T0C,MB1,MBBG1,V0L,V0R,MULow,EMPTY,MBBG3,MULL,MULU,MUHigh
7b303c5a 45 }
5376e016
CP
46
47 AliAnalysisTaskMuMu* task = new AliAnalysisTaskMuMu;
7b303c5a 48
5376e016 49 AliAnalysisMuMuEventCutter* eventCutter = new AliAnalysisMuMuEventCutter(triggerClassesToConsider);
764cabcb 50
5376e016
CP
51 AliAnalysisMuMuCutRegistry* cr = task->CutRegistry();
52
53 AliAnalysisMuMuCutElement* eventTrue = cr->AddEventCut(*eventCutter,"IsTrue","const AliVEvent&","");
7b303c5a 54
5376e016
CP
55 AliAnalysisMuMuCutElement* ps = eventTrue;
56
57 if (!simulations)
7b303c5a 58 {
5376e016 59 ps = cr->AddEventCut(*eventCutter,"IsPhysicsSelected","const AliInputEventHandler&","");
7b303c5a 60 }
61
5376e016 62 AliAnalysisMuMuCutElement* triggerSelection = cr->AddTriggerClassCut(*eventCutter,"SelectTriggerClass","const TString&,TString&,UInt_t,UInt_t,UInt_t","");
2f331ac9 63
5376e016
CP
64 cr->AddCutCombination(triggerSelection);
65
66// AliAnalysisMuMuCutElement* cutVDM = cr->AddEventCut(*eventCutter,"IsPhysicsSelectedVDM","const AliVEvent&","");
67//
68// AliAnalysisMuMuCutElement* cutTZEROPileUp = cr->AddEventCut(*eventCutter,"IsTZEROPileUp","const AliVEvent&","");
69//
70// AliAnalysisMuMuCutElement* notTZEROPileUp = cr->Not(*cutTZEROPileUp);
71
72 cr->AddCutCombination(ps);
73
74 task->SetBeamYear(beamYear);
75
76 AliAnalysisMuMuGlobal* globalAnalysis = 0x0;//new AliAnalysisMuMuGlobal;
77
78 AliAnalysisMuMuSingle* singleAnalysis = new AliAnalysisMuMuSingle;
79
80 AliAnalysisMuMuMinv* minvAnalysis = new AliAnalysisMuMuMinv;
81
82// TFile f("$HOME/Downloads/ResponseMatrix_QASPDZPSALL_ANY.root");
83// TH2* h = static_cast<TH2*>(f.Get("ResponseMatrix"));
84
85 AliAnalysisMuMuNch* nchAnalysis = new AliAnalysisMuMuNch; // (0x0,-2,2,-40,40);
86
87// AliAnalysisMuMuNch(TH2* spdCorrection=0x0,
88// Int_t nbinsEta=10, Double_t etaMin=-0.5, Double_t etaMax=0.5,
89// Int_t nbinsZ=320, Double_t zmin=-40, Double_t zmax=40);
90
91
92 if ( globalAnalysis )
7b303c5a 93 {
5376e016
CP
94 AliAnalysisMuMuCutElement* triggerAll = cr->AddTriggerClassCut(*globalAnalysis,"SelectAnyTriggerClass","const TString&,TString&","");
95
96 cr->AddCutCombination(triggerAll);
7b303c5a 97
5376e016 98 task->AdoptSubAnalysis(globalAnalysis);
7b303c5a 99 }
7b303c5a 100
5376e016 101 if ( nchAnalysis )
7b303c5a 102 {
5376e016
CP
103// AliAnalysisMuMuCutElement* trketa2 = cr->AddEventCut(*nchAnalysis,"HasAtLeastNTrackletsInEtaRange","const AliVEvent&,Int_t, Double_t& , Double_t& ","1,-2.0,2.0");
104// AliAnalysisMuMuCutElement* trketa1 = cr->AddEventCut(*nchAnalysis,"HasAtLeastNTrackletsInEtaRange","const AliVEvent&,Int_t, Double_t& , Double_t& ","1,-1.0,1.0");
105// AliAnalysisMuMuCutElement* trk5eta1 = cr->AddEventCut(*nchAnalysis,"HasAtLeastNTrackletsInEtaRange","const AliVEvent&,Int_t, Double_t& , Double_t& ","5,-1.0,1.0");
106//
107// cr->AddCutCombination(ps,trketa1);
108// cr->AddCutCombination(ps,trk5eta1);
109// cr->AddCutCombination(ps,trketa2);
110
111 AliAnalysisMuMuCutElement* cutZ18= cr->AddEventCut(*eventCutter,"IsAbsZBelowValue","const AliVEvent&,Double_t","18");
112
113 AliAnalysisMuMuCutElement* cutZ10 = cr->AddEventCut(*eventCutter,"IsAbsZBelowValue","const AliVEvent&,Double_t","10");
7b303c5a 114
5376e016
CP
115 cr->AddCutCombination(ps,cutZ18);
116 cr->AddCutCombination(ps,cutZ10);
117
118 task->AdoptSubAnalysis(nchAnalysis);
7b303c5a 119 }
120
5376e016
CP
121 if ( singleAnalysis )
122 {
123 AliAnalysisMuMuCutElement* trackTrue = cr->AddTrackCut(*cr,"AlwaysTrue","const AliVParticle&","");
124 AliAnalysisMuMuCutElement* rabs = cr->AddTrackCut(*singleAnalysis,"IsRabsOK","const AliVParticle&","");
125 AliAnalysisMuMuCutElement* eta = cr->AddTrackCut(*singleAnalysis,"IsEtaInRange","const AliVParticle&,Double_t&,Double_t&","-4.0,-2.5");
126
127 cr->AddCutCombination(trackTrue);
2f331ac9 128
5376e016
CP
129 cr->AddCutCombination(rabs);
130
131 cr->AddCutCombination(eta);
132
133 cr->AddCutCombination(rabs,eta);
2f331ac9 134
5376e016
CP
135 task->AdoptSubAnalysis(singleAnalysis);
136
137 if ( minvAnalysis )
138 {
139 AliAnalysisMuMuCutElement* pairTrue = cr->AddTrackPairCut(*cr,"AlwaysTrue","const AliVParticle&, const AliVParticle&","");
140
141 AliAnalysisMuMuCutElement* pairy = cr->AddTrackPairCut(*minvAnalysis,"IsRapidityInRange","const AliVParticle&,const AliVParticle&,Double_t&,Double_t&","-4,-2.5");
2f331ac9 142
5376e016 143 cr->AddCutCombination(rabs,eta,pairy);
764cabcb 144
5376e016 145 cr->AddCutCombination(rabs,pairy);
764cabcb 146
5376e016
CP
147 cr->AddCutCombination(pairy);
148
149 cr->AddCutCombination(pairTrue);
150
151 task->AdoptSubAnalysis(minvAnalysis);
152 }
7b303c5a 153 }
5376e016
CP
154
155 /// below are the kind of configurations that can be performed :
156 /// - adding cuts (at event, track or pair level)
157 /// - adding bins (in pt, y, centrality, etc...) for minv (and meanpt)
7b303c5a 158
5376e016
CP
159 AliAnalysisMuMuBinning* binning = task->Binning();
160
161 if (minvAnalysis)
7b303c5a 162 {
5376e016
CP
163 binning->AddBin("psi","pt");
164
165 // pt binning
166
167 binning->AddBin("psi","pt", 0.0, 1.0,"IGOR");
168 binning->AddBin("psi","pt", 1.0, 2.0,"IGOR");
169 binning->AddBin("psi","pt", 2.0, 3.0,"IGOR");
170 binning->AddBin("psi","pt", 3.0, 4.0,"IGOR");
171 binning->AddBin("psi","pt", 4.0, 5.0,"IGOR");
172 binning->AddBin("psi","pt", 5.0, 6.0,"IGOR");
173 binning->AddBin("psi","pt", 6.0, 7.0,"IGOR");
174 binning->AddBin("psi","pt", 7.0, 9.0,"IGOR");
175 binning->AddBin("psi","pt", 9.0,11.0,"IGOR");
176 binning->AddBin("psi","pt",11.0,15.0,"IGOR");
177 binning->AddBin("psi","pt",15.0,25.0,"IGOR");
178
179 // y binning
7b303c5a 180
5376e016
CP
181 binning->AddBin("psi","y",-4,-2.5,"ILAB");
182
183 for ( Int_t i = 0; i < 6; ++i )
184 {
185 Double_t y = -4+i*0.25;
186
187 binning->AddBin("psi","y",y,y+0.25,"6PACK");
188 }
189
190 // nch binning
191 if (nchAnalysis)
192 {
193 binning->AddBin("psi","nch",0.0,30.0,"JAVI"); // 0 - 29
194 binning->AddBin("psi","nch",29.0,42.0,"JAVI"); // 30 - 41
195 binning->AddBin("psi","nch",41.0,56.0,"JAVI"); // 42 - 55
196 binning->AddBin("psi","nch",55.0,72.0,"JAVI"); // 56 - 72
197 binning->AddBin("psi","nch",72.0,301.0,"JAVI"); // 73 - 300
198 }
7b303c5a 199 }
5376e016
CP
200
201 // v0 centrality binning
202
203 binning->AddBin("centrality","v0a");
204// binning->AddBin("centrality","v0a",0,5);
205// binning->AddBin("centrality","v0a",5,10);
206// binning->AddBin("centrality","v0a",10,20);
207// binning->AddBin("centrality","v0a",20,40);
208// binning->AddBin("centrality","v0a",40,60);
209// binning->AddBin("centrality","v0a",60,80);
210// binning->AddBin("centrality","v0a",80,100);
7b303c5a 211
5376e016 212 // disable some histograms if we don't want them
7b303c5a 213 task->DisableHistograms("^V02D");
214 task->DisableHistograms("^dca");
215 task->DisableHistograms("^Chi12");
216 task->DisableHistograms("^Rabs12");
5376e016
CP
217
218 // add the configured task to the analysis manager
764cabcb 219 mgr->AddTask(task);
220
764cabcb 221 // Create containers for input/output
222 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
7b303c5a 223
224 AliAnalysisDataContainer *coutputHC =
5376e016 225 mgr->CreateContainer("OC",AliMergeableCollection::Class(),AliAnalysisManager::kOutputContainer,outputname);
7b303c5a 226
227 AliAnalysisDataContainer *coutputCC =
228 mgr->CreateContainer("CC",AliCounterCollection::Class(),AliAnalysisManager::kOutputContainer,outputname);
229
230 AliAnalysisDataContainer* cparam =
231 mgr->CreateContainer("BIN", AliAnalysisMuMuBinning::Class(),AliAnalysisManager::kParamContainer,outputname);
764cabcb 232
233 // Connect input/output
234 mgr->ConnectInput(task, 0, cinput);
7b303c5a 235 mgr->ConnectOutput(task, 1, coutputHC);
236 mgr->ConnectOutput(task, 2, coutputCC);
237 mgr->ConnectOutput(task, 3, cparam);
764cabcb 238
239 return task;
240}
241