]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/macrosJPSI/AddTask_jpsi_Default.C
-updates jpsi default QAtask (raul)
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosJPSI / AddTask_jpsi_Default.C
CommitLineData
ad957d2a 1void InitHistograms(AliDielectron *die, Int_t cutDefinition);
2void InitCF(AliDielectron* die, Int_t cutDefinition);
3
2e044207 4void SetupEventCuts(AliDielectron *die, Int_t cutDefinition);
ad957d2a 5void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition);
2e044207 6void SetupPairCuts(AliDielectron *die, Int_t cutDefinition);
a18c6da2 7//QAtask
8
9void SetupV0cuts(AliDielectron *die, Int_t cutDefinition);
10void SetupV0Add(AliDielectron *die, Int_t cutDefinition);
11
12/*
13namespace ConfDef {
14
15 void InitHistograms(AliDielectron *die, Int_t cutDefinition);
16 void InitCF(AliDielectron* die, Int_t cutDefinition);
17 void SetupV0Cuts(AliDielectron *die, Int_t cutDefinition);
18 void SetupV0Add(AliDielectron *die, Int_t cutDefinition);
19 void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition);
20 void SetupPairCuts(AliDielectron *die, Int_t cutDefinition);
21 void SetEtaCorrection();
22 enum {kDefault,kHF,kLmee,kDefault_activevolume,kDefault_conversions,kDefault_conversions_wPID};
23}
24*/
2e044207 25
a18c6da2 26enum ConfDef {kDefault,kHF,kLmee,kDefault_activevolume,kDefault_conversions,kDefault_conversions_wPID};
2e044207 27void SetupMCsignals(AliDielectron *die);
a18c6da2 28//TVectorD *GetRunNumbers();
29TVectorD *GetRunNumbers() {
30 if (period="LHC10d"){
31 return AliDielectronHelper::MakeArbitraryBinning ("122374,122375,124751,125023,125085,125097,125100,125101,125134,125296,125628,125630,125632,125633,125842,125843,125844,125847,125848,125849,125850,125851,125855,125941,125942,125943,125944,125945,125946,125947,125948,125949,125950,125951,125952,125953,125954,125955,125956,125957,125958,125959,125960,125961,125962,125963,125964,125965,125966,125969,125970,125976,125978,125981,125982,125983,125984,125985,125986,125997,125998,125999,126004,126007,126008,126073,126078,126081,126082,126088,126090,126097,126158,126160,126168,126283,126284,126285,126351,126352,126359,126403,126404,126405,126406,126407,126408,126409,126422,126424,126425,126432");
32 }
33}
34 // increasing order of run array is important
ad957d2a 35
a18c6da2 36//TString names=("default");
37TString names=("JPsi;kHFe;Lmee;Jpsi_activevolume;Jpsi_conversions;Jpsi_conversions_wPID");
ad957d2a 38TObjArray *arrNames=names.Tokenize(";");
39
40const Int_t nDie=arrNames->GetEntries();
2e044207 41Bool_t isAOD=kFALSE;
42Bool_t hasMC=kFALSE;
43Int_t iPeriod=-1;
95240039 44enum { k10b=0, k10c, k10d, k10e, k10f, k10h, k11a, k11d, k11h, k12h, k13b, k13c, k13d, k13e, k13f };
ad957d2a 45
46//______________________________________________________________________________________
2e044207 47AliAnalysisTask* AddTask_jpsi_Default(TString prod="", Bool_t isMC=kFALSE)
0d0e5aa5 48{
49 //get the current analysis manager
50
51 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
52 if (!mgr) {
53 Error("AddTask_jpsi_JPsi", "No analysis manager found.");
54 return 0;
55 }
56
57 //Do we have an MC handler?
2e044207 58 hasMC=(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()!=0x0);
59
0d0e5aa5 60 //AOD input?
2e044207 61 isAOD=mgr->GetInputEventHandler()->IsA()==AliAODInputHandler::Class();
62 if(isAOD) hasMC=isMC;
63
0d0e5aa5 64 //Get the current train configuration
65 TString trainConfig=gSystem->Getenv("CONFIG_FILE");
0d0e5aa5 66 TString list=gSystem->Getenv("LIST");
67 if( list.IsNull()) list=prod;
2e044207 68
69 // selected period
70 if( !prod.CompareTo("LHC10b") ) iPeriod = k10b;
71 else if( !prod.CompareTo("LHC10c") ) iPeriod = k10c;
72 else if( !prod.CompareTo("LHC10d") ) iPeriod = k10d;
73 else if( !prod.CompareTo("LHC10e") ) iPeriod = k10e;
74 else if( !prod.CompareTo("LHC10f") ) iPeriod = k10f;
75 else if( !prod.CompareTo("LHC10h") ) iPeriod = k10h;
76 else if( !prod.CompareTo("LHC11a") ) iPeriod = k11a;
77 else if( !prod.CompareTo("LHC11d") ) iPeriod = k11d;
78 else if( !prod.CompareTo("LHC11h") ) iPeriod = k11h;
79 else if( !prod.CompareTo("LHC12h") ) iPeriod = k12h;
95240039 80 else if( !prod.CompareTo("LHC13b") ) iPeriod = k13b;
81 else if( !prod.CompareTo("LHC13c") ) iPeriod = k13c;
82 else if( !prod.CompareTo("LHC12d") ) iPeriod = k13d;
83 else if( !prod.CompareTo("LHC12e") ) iPeriod = k13e;
84 else if( !prod.CompareTo("LHC12f") ) iPeriod = k13f;
2e044207 85
86 // // aod monte carlo
87 // if( list.Contains("LHC11a10") ||
88 // list.Contains("LHC11b10") ||
89 // list.Contains("LHC12a17") ||
90 // list.Contains("fix")
91 // ) hasMC=kTRUE;
92
0d0e5aa5 93 //create task and add it to the manager
94 AliAnalysisTaskMultiDielectron *task=new AliAnalysisTaskMultiDielectron("JpsiDefault");
2e044207 95 // task->SetBeamEnergy(1380.); // not neeeded since we are not looking at helicity and Collins-Soper coordinates
0d0e5aa5 96 if (!hasMC) task->UsePhysicsSelection();
2e044207 97
98 // add special triggers
99 switch(iPeriod) {
100 case k11d: task->SetTriggerMask(AliVEvent::kEMCEJE+AliVEvent::kEMC7+AliVEvent::kEMCEGA); break;
101 case k11h: task->SetTriggerMask(AliVEvent::kMB+AliVEvent::kCentral+AliVEvent::kSemiCentral); break;
95240039 102 case k12h: task->SetTriggerMask(AliVEvent::kAnyINT); break;
103 case k13b: task->SetTriggerMask(AliVEvent::kINT7); break;
104 case k13c: task->SetTriggerMask(AliVEvent::kINT7); break;
105 case k13d: task->SetTriggerMask(AliVEvent::kAnyINT); break;
106 case k13e: task->SetTriggerMask(AliVEvent::kAnyINT); break;
a18c6da2 107 case k13f: task->SetTriggerMask(AliVEvent::kAnyINT); break;
0d0e5aa5 108 }
0d0e5aa5 109 mgr->AddTask(task);
110
0d0e5aa5 111 //add dielectron analysis with different cuts to the task
112 for (Int_t i=0; i<nDie; ++i){ //nDie defined in config file
113 AliDielectron *jpsi=ConfigDefault(i);
114 if (!jpsi) continue;
2e044207 115 jpsi->SetHasMC(hasMC);
0d0e5aa5 116 task->AddDielectron(jpsi);
117 }
0d0e5aa5 118
119 // task->SetTriggerOnV0AND();
2e044207 120 // if ( trainConfig=="pp" ) task->SetRejectPileup();
0d0e5aa5 121
122 //create output container
123 AliAnalysisDataContainer *coutput1 =
124 mgr->CreateContainer("jpsi_Default_tree",
125 TTree::Class(),
126 AliAnalysisManager::kExchangeContainer,
127 "jpsi_Default_default");
128
129 AliAnalysisDataContainer *cOutputHist1 =
130 mgr->CreateContainer("jpsi_Default_QA",
131 TList::Class(),
132 AliAnalysisManager::kOutputContainer,
133 "jpsi_Default.root");
134
135 AliAnalysisDataContainer *cOutputHist2 =
136 mgr->CreateContainer("jpsi_Default_CF",
137 TList::Class(),
138 AliAnalysisManager::kOutputContainer,
139 "jpsi_Default.root");
140
141 AliAnalysisDataContainer *cOutputHist3 =
142 mgr->CreateContainer("jpsi_Default_EventStat",
143 TH1D::Class(),
144 AliAnalysisManager::kOutputContainer,
145 "jpsi_Default.root");
146
147 mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
148 mgr->ConnectOutput(task, 0, coutput1 );
149 mgr->ConnectOutput(task, 1, cOutputHist1);
150 mgr->ConnectOutput(task, 2, cOutputHist2);
151 mgr->ConnectOutput(task, 3, cOutputHist3);
152
153 return task;
154}
ad957d2a 155
156
157//______________________________________________________________________________________
158//______________________________________________________________________________________
159//______________________________________________________________________________________
160//
161// Here the configuration part starts
162//
163AliDielectron* ConfigDefault(Int_t cutDefinition)
164{
165 //
166 // Setup the instance of AliDielectron
167 //
168
ad957d2a 169 // create the actual framework object
170 TString name=Form("%02d",cutDefinition);
171 if (cutDefinition<arrNames->GetEntriesFast()){
172 name=arrNames->At(cutDefinition)->GetName();
173 }
174 AliDielectron *die =
175 new AliDielectron(Form("%s",name.Data()),
176 Form("Track cuts: %s",name.Data()));
177
2e044207 178 /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
179 SetupEventCuts(die,cutDefinition);
ad957d2a 180 SetupTrackCuts(die,cutDefinition);
a18c6da2 181
182 if (cutDefinition ==ConfDef::kDefault || cutDefinition ==ConfDef::kLmee || cutDefinition ==ConfDef::kDefault_activevolume){
183 SetupV0Cuts(die,cutDefinition);
184 }
185
186//V0s to have a pure e+e- sample to check the TPC nsigma
187 if (cutDefinition ==ConfDef::kDefault_conversions || cutDefinition ==ConfDef::kDefault_conversions_wPID){
188 SetupV0add(die,cutDefinition);
189 }
190
191 if (cutDefinition ==ConfDef::kLmee || cutDefinition ==ConfDef::kDefault_conversions || cutDefinition ==ConfDef::kDefault_conversions_wPID ){
192 die->SetNoPairing();
193 }
194
195 //SetupV0Cuts(die,cutDefinition);
ad957d2a 196 SetupPairCuts(die,cutDefinition);
2e044207 197
198 /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv MISC vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
199 // Monte Carlo Signals
200 if (hasMC) SetupMCsignals(die);
201 // prefilter settings
a18c6da2 202 // die->SetPreFilterUnlikeOnly();// die->SetNoPairing();// die->SetPreFilterAllSigns();
2e044207 203 // cut QA
a18c6da2 204 // die->SetCutQA();
2e044207 205
206 /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv OUTPUT vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
ad957d2a 207 InitHistograms(die,cutDefinition);
ad957d2a 208 InitCF(die,cutDefinition);
2e044207 209
210
ad957d2a 211 // AliDielectronMixingHandler *mix=new AliDielectronMixingHandler;
212 // mix->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-8,-5,0,5,8,10");
213 // mix->AddVariable(AliDielectronVarManager::kPhi ,"0,3.14,6.3");
214 // mix->SetDepth(10);
215 // die->SetMixingHandler(mix);
216 //
2e044207 217
ad957d2a 218 return die;
219}
220
2e044207 221//______________________________________________________________________________________
222void SetupEventCuts(AliDielectron *die, Int_t cutDefinition)
223{
224 //
225 // Setup the event cuts
226 //
227
228 AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("eventCuts","eventCuts");
229 if(isAOD) eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny);
230 eventCuts->SetRequireVertex();
231 eventCuts->SetMinVtxContributors(1);
232 eventCuts->SetVertexZ(-10.,+10.);
233 eventCuts->Print();
234 die->GetEventFilter().AddCuts(eventCuts);
235
236}
237
ad957d2a 238//______________________________________________________________________________________
239void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition)
240{
241 //
242 // Setup the track cuts
243 //
244
a18c6da2 245 AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND);
246 die->GetTrackFilter().AddCuts(cuts);
247
248 //default quality cuts
249 AliDielectronTrackCuts *refit=new AliDielectronTrackCuts("refit","refit");
250
251 if (cutDefinition==ConfDef::kDefault){
252 refit->SetRequireITSRefit(kTRUE);
253 refit->SetRequireTPCRefit(kTRUE);
254 refit->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
255 }else if(cutDefinition==ConfDef::kHF){
256 refit->SetRequireITSRefit(kTRUE);
257 refit->SetRequireTPCRefit(kTRUE);
258 refit->SetClusterRequirementITS(AliESDtrackCuts::kFirst,AliESDtrackCuts::kBoth);
259 }else if(cutDefinition==ConfDef::kLmee){
260 refit->SetRequireITSRefit(kTRUE);
261 refit->SetRequireTPCRefit(kTRUE);
262 refit->SetClusterRequirementITS(AliESDtrackCuts::kFirst,AliESDtrackCuts::kAny);
263 }else if (cutDefinition ==ConfDef::kDefault_activevolume){
264 refit->SetRequireITSRefit(kTRUE);
265 refit->SetRequireTPCRefit(kTRUE);
266 refit->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
267 }else if (cutDefinition ==ConfDef::kDefault_conversions){
268 refit->SetRequireITSRefit(kTRUE);
269 refit->SetRequireTPCRefit(kTRUE);
270 // refit->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
271 }else if(cutDefinition ==ConfDef::kDefault_conversions_wPID){
272 refit->SetRequireITSRefit(kTRUE);
273 refit->SetRequireTPCRefit(kTRUE);
274 // refit->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
275
276 }
277 cuts->AddCut(refit);
278
279
280 //pt and kink mother
281 AliDielectronVarCuts *pt = new AliDielectronVarCuts("ptCut","pt cut");
282
283 if (cutDefinition==kDefault){
284 pt->AddCut(AliDielectronVarManager::kPt,1.,1.e30);
285 pt->AddCut(AliDielectronVarManager::kEta,-0.9,0.9);
286 pt->AddCut(AliDielectronVarManager::kKinkIndex0,0.);
287 pt->AddCut(AliDielectronVarManager::kTPCnSigmaEle,-3.,3.);
288 pt->AddCut(AliDielectronVarManager::kTPCnSigmaPio,3.5,1000.);
289 pt->AddCut(AliDielectronVarManager::kTPCnSigmaPro,3.,1000.);
290 //rjim NTPCclusters cut
291 pt->AddCut(AliDielectronVarManager::kNclsTPC,70.,160.);
292 pt->AddCut(AliDielectronVarManager::kTPCchi2Cl,0.,4.);
293 //impact parameter
294 pt->AddCut(AliDielectronVarManager::kImpactParXY,-1.,1.);
295 pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.);
296 }
297 else if (cutDefinition==kHF) {
298 pt->AddCut(AliDielectronVarManager::kPt,1.,1.e30);
299 pt->AddCut(AliDielectronVarManager::kEta,-0.8,0.8);
300 //to be checked
301 pt->AddCut(AliDielectronVarManager::kKinkIndex0,0.);
302 pt->AddCut(AliDielectronVarManager::kTPCnSigmaEle,-0.5.,3.);
303 if (AliDielectronVarManager::kTOFPIDBit >0.8){
304 pt->AddCut(AliDielectronVarManager::kTOFnSigmaEle,-3.,3.);
305 }
306 //TPC PID ClusteR
307 pt->AddCut(AliDielectronVarManager::kTPCsignalN,80.,160.);
308 //rjim NTPCcluster cut
309 pt->AddCut(AliDielectronVarManager::kNclsTPC,120.,160.);
310 pt->AddCut(AliDielectronVarManager::kNFclsTPCfCross,0.6,1.1);
311 pt->AddCut(AliDielectronVarManager::kTPCchi2Cl,0.,4.);
312 // pt->AddCut(AliDielectronVarManager::kNClsITS,4.,200);
313 //rjim
314 pt->AddCut(AliDielectronVarManager::kImpactParXY,-1.,1.);
315 pt->AddCut(AliDielectronVarManager::kImpactParZ,-2.,2.);
316 }
317 else if (cutDefinition==kLmee) {
318 pt->AddCut(AliDielectronVarManager::kPt,0.2,1.e30);
319 pt->AddCut(AliDielectronVarManager::kEta,-0.8,0.8);
320 pt->AddCut(AliDielectronVarManager::kKinkIndex0,0.);
321 pt->AddCut(AliDielectronVarManager::kTPCnSigmaEle,-3.,3.);
322 pt->AddCut(AliDielectronVarManager::kTPCnSigmaPio,3.,1000.);
323 pt->AddCut(AliDielectronVarManager::kTOFnSigmaEle,-3.,3.);
324 //rjim Nitsclusters cut
325 // pt->AddCut(AliDielectronVarManager::kNclsITS,4.,160.);
326 //add ncrossed rows tpc instead cluster instead Ncluster
327 pt->AddCut(AliDielectronVarManager::kNclsTPC,70.,160.);
328 pt->AddCut(AliDielectronVarManager::kNFclsTPCfCross,0.8,1.0);
329 pt->AddCut(AliDielectronVarManager::kTPCchi2Cl,0.,4.);
330 pt->AddCut(AliDielectronVarManager::kImpactParXY,-1.,1.);
331 pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.);
332 }else if(cutDefinition==kDefault_activevolume){
333 pt->AddCut(AliDielectronVarManager::kPt,1.,1.e30);
334 pt->AddCut(AliDielectronVarManager::kEta,-0.9,0.9);
335 pt->AddCut(AliDielectronVarManager::kKinkIndex0,0.);
336 pt->AddCut(AliDielectronVarManager::kTPCnSigmaEle,-3.,3.);
337 pt->AddCut(AliDielectronVarManager::kTPCnSigmaPio,3.5,1000.);
338 pt->AddCut(AliDielectronVarManager::kTPCnSigmaPro,3.,1000.);
339 // pt->AddCut(AliDielectronVarManager::kTPCactvol,120.,200.);
340 // NTPCclusters
341 pt->AddCut(AliDielectronVarManager::kNclsTPC,70.,160.);
342 pt->AddCut(AliDielectronVarManager::kTPCchi2Cl,0.,4.);
343 //impact parameter
344 pt->AddCut(AliDielectronVarManager::kImpactParXY,-1.,1.);
345 pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.);
346 // pt->AddCut(AliDielectronVarManager::kTOFPIDBit,0.8,2.0);
347 }else if(cutDefinition==kDefault_conversions){
348 pt->AddCut(AliDielectronVarManager::kPt,1.,1.e30);
349 pt->AddCut(AliDielectronVarManager::kEta,-0.9,0.9);
350 pt->AddCut(AliDielectronVarManager::kKinkIndex0,0.);
351 // pt->AddCut(AliDielectronVarManager::kTPCnSigmaEle,-3.,3.);
352 pt->AddCut(AliDielectronVarManager::kTPCnSigmaPio,3.5,1000.);
353 pt->AddCut(AliDielectronVarManager::kTPCnSigmaPro,3.,1000.);
354 pt->AddCut(AliDielectronVarManager::kNclsTPC,70.,160.);
355 pt->AddCut(AliDielectronVarManager::kTPCchi2Cl,0.,4.);
356 pt->AddCut(AliDielectronVarManager::kImpactParXY,-1.,1.);
357 pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.);
358 }else if(cutDefinition==kDefault_conversions_wPID){
359 pt->AddCut(AliDielectronVarManager::kPt,1.,1.e30);
360 pt->AddCut(AliDielectronVarManager::kEta,-0.9,0.9);
361 pt->AddCut(AliDielectronVarManager::kKinkIndex0,0.);
362 pt->AddCut(AliDielectronVarManager::kTPCnSigmaEle,-3.,3.);
363 pt->AddCut(AliDielectronVarManager::kTPCnSigmaPio,3.5,1000.);
364 pt->AddCut(AliDielectronVarManager::kTPCnSigmaPro,3.,1000.);
365 pt->AddCut(AliDielectronVarManager::kNclsTPC,70.,160.);
366 pt->AddCut(AliDielectronVarManager::kTPCchi2Cl,0.,4.);
367 pt->AddCut(AliDielectronVarManager::kImpactParXY,-1.,1.);
368 pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.);
369 }
370 cuts->AddCut(pt);
371
372
373
374 /*
375
376 // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv TRACK CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv /
2e044207 377 AliDielectronVarCuts *varAccCuts = new AliDielectronVarCuts("acc","acc");
378 varAccCuts->AddCut(AliDielectronVarManager::kPt, 0.8, 1e30);
379 varAccCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9);
380 die->GetTrackFilter().AddCuts(varAccCuts);
381 varAccCuts->Print();
382
383
384 AliDielectronVarCuts *varRecCuts = new AliDielectronVarCuts("VarRecCuts","VarRecCuts");
385 varRecCuts->AddCut(AliDielectronVarManager::kNclsTPC, 70., 160.);
386 varRecCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
387 varRecCuts->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
388 varRecCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0);
389 // varRecCuts->AddCut(AliDielectronVarManager::kITSchi2Cl, 0. , 36. ); // not defined in AOD
95240039 390 varRecCuts->AddCut(AliDielectronVarManager::kKinkIndex0,.000001,1e30,kTRUE);
2e044207 391
392 AliDielectronTrackCuts *trkRecCuts = new AliDielectronTrackCuts("TrkRecCuts","TrkRecCuts");
393 trkRecCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 3); // SPD any
394 trkRecCuts->SetRequireITSRefit(kTRUE);
395 trkRecCuts->SetRequireTPCRefit(kTRUE);
396
397 AliDielectronCutGroup *grpRecCuts = new AliDielectronCutGroup("rec","rec",AliDielectronCutGroup::kCompAND);
398 grpRecCuts->AddCut(trkRecCuts);
399 grpRecCuts->AddCut(varRecCuts);
400 die->GetTrackFilter().AddCuts(grpRecCuts);
401 grpRecCuts->Print();
402
403
404 /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv PID CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */
405 AliDielectronVarCuts *pidVarCuts = new AliDielectronVarCuts("varPIDCuts","varPIDCuts");
406 pidVarCuts->AddCut(AliDielectronVarManager::kTPCnSigmaEle, -2. , 3. ); //-3.0
407 pidVarCuts->AddCut(AliDielectronVarManager::kTPCnSigmaPio, 3.5, 1000. );
408 pidVarCuts->AddCut(AliDielectronVarManager::kTPCnSigmaPro, 4. , 1000. ); //3.0
409 // AliDielectronPID *pidCuts = new AliDielectronPID("PIDCuts","PIDCuts"); //not used
410 AliDielectronCutGroup *grpPIDCuts = new AliDielectronCutGroup("PID","PID",AliDielectronCutGroup::kCompAND);
411 grpPIDCuts->AddCut(pidVarCuts);
412 //grpPIDCuts->AddCut(pidCuts);
413 die->GetTrackFilter().AddCuts(grpPIDCuts);
414 grpPIDCuts->Print();
415
416 //
ad957d2a 417
418
419 //exclude conversion electrons selected by the tender
420 // AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","noConv");
421 // noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE);
422 // cuts->AddCut(noconv);
a18c6da2 423
424 cuts->Print();
425}
426void SetupV0Cuts(AliDielectron *die, Int_t cutDefinition)
427{
428 //
429 // Setup the V0 cuts
430 //
431 AliDielectronV0Cuts *gammaV0Cuts = new AliDielectronV0Cuts("IsGamma","IsGamma");
432 gammaV0Cuts->SetPdgCodes(22,11,11);
433 gammaV0Cuts->SetDefaultPID(13); // TPC+-10, TOF+-3 if available
434 gammaV0Cuts->AddCut(AliDielectronVarManager::kCosPointingAngle,TMath::Cos(0.02),1.0, kFALSE);
435 gammaV0Cuts->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 10.0, kFALSE);//to be checked, if properly filled
436 gammaV0Cuts->AddCut(AliDielectronVarManager::kLegDist, 0.0, 0.25, kFALSE);
437 gammaV0Cuts->AddCut(AliDielectronVarManager::kR, 3.0, 90.0, kFALSE);
438 gammaV0Cuts->AddCut(AliDielectronVarManager::kPsiPair, 0.0, 0.05, kFALSE);
439 gammaV0Cuts->AddCut(AliDielectronVarManager::kM, 0.0, 0.05, kFALSE);
440 // gammaV0Cuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.1, kFALSE);
441 gammaV0Cuts->AddCut(AliDielectronVarManager::kArmPt, 0.0, 0.05, kFALSE);
442 // gammaV0Cuts->AddCut(AliDielectronVarManager::kArmAlpha, -0.35,0.35, kFALSE); // not sure if it works as expected
443 gammaV0Cuts->SetExcludeTracks(kTRUE);//ktrue excludes tracks v0s,
444 //kfalse
445 // gammaV0Cuts->Print();
446 // const Double_t |cutAlphaG| < 0.35; && const Double_t cutQTG < 0.05;
447 // const Double_t |cutAlphaG2|[2] = {0.6, 0.8}; && const Double_t cutQTG2 < 0.04;
448 die->GetTrackFilter().AddCuts(gammaV0Cuts);
449 gammaV0Cuts->Print(); //
ad957d2a 450}
451
a18c6da2 452void SetupV0add(AliDielectron *die, Int_t cutDefinition)
453{
454 //
455 // Setup the V0 cuts
456 //
457 AliDielectronV0Cuts *gammaV0Add = new AliDielectronV0Cuts("IsGamma2","IsGamma2");
458 gammaV0Add->SetPdgCodes(22,11,11);
459 gammaV0Add->SetDefaultPID(13); // TPC+-10, TOF+-3 if available
460 gammaV0Add->AddCut(AliDielectronVarManager::kCosPointingAngle,TMath::Cos(0.02),1.0, kFALSE);
461 gammaV0Add->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 10.0, kFALSE);//to be checked, if properly filled
462 gammaV0Add->AddCut(AliDielectronVarManager::kLegDist, 0.0, 0.25, kFALSE);
463 gammaV0Add->AddCut(AliDielectronVarManager::kR, 3.0, 90.0, kFALSE);
464 gammaV0Add->AddCut(AliDielectronVarManager::kPsiPair, 0.0, 0.05, kFALSE);
465 gammaV0Add->AddCut(AliDielectronVarManager::kM, 0.0, 0.05, kFALSE);
466 // gammaV0Cuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.1, kFALSE);
467 gammaV0Add->AddCut(AliDielectronVarManager::kArmPt, 0.0, 0.05, kFALSE);
468 // gammaV0Cuts->AddCut(AliDielectronVarManager::kArmAlpha, -0.35,0.35, kFALSE); // not sure if it works as expected
469
470 gammaV0Add->SetExcludeTracks(kFALSE);//ktrue excludes tracks v0s,
471
472 //kfalse
473 // gammaV0Cuts->Print();
474 // const Double_t |cutAlphaG| < 0.35; && const Double_t cutQTG < 0.05;
475 // const Double_t |cutAlphaG2|[2] = {0.6, 0.8}; && const Double_t cutQTG2 < 0.04;
476 die->GetTrackFilter().AddCuts(gammaV0Add);
477 gammaV0Add->Print(); //
478}
ad957d2a 479//______________________________________________________________________________________
480void SetupPairCuts(AliDielectron *die, Int_t cutDefinition)
481{
482 //
483 // Setup the pair cuts
484 //
485
ad957d2a 486 // add conversion rejection
487 AliDielectronVarCuts *gammaCut=new AliDielectronVarCuts("gammaCut","gammaCut");
488 gammaCut->AddCut(AliDielectronVarManager::kM,0.,.05);
489 die->GetPairPreFilter().AddCuts(gammaCut);
ad957d2a 490
491}
492
493//______________________________________________________________________________________
494void InitHistograms(AliDielectron *die, Int_t cutDefinition)
495{
496 //
497 // Initialise the histograms
498 //
499
500 //Setup histogram Manager
501 AliDielectronHistos *histos=
502 new AliDielectronHistos(die->GetName(),
503 die->GetTitle());
504
505 //Initialise histogram classes
506 histos->SetReservedWords("Track;Pair");
507
508 //Track classes
509 //to fill also track info from 2nd event loop until 2
510 for (Int_t i=0; i<2; ++i){
511 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
512 }
513
514 //Pair classes
515 // to fill also mixed event histograms loop until 10
516 for (Int_t i=0; i<3; ++i){
517 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
518 }
519
2e044207 520 //add MC signal histograms to track and pair class
521 if(die->GetMCSignals()) {
522 for(Int_t isig=0; isig<die->GetMCSignals()->GetEntriesFast(); isig++) {
523 TString sigMCname = die->GetMCSignals()->At(isig)->GetName();
524
525 // mc truth
526 histos->AddClass(Form("Pair_%s_MCtruth", sigMCname.Data()));
527 histos->AddClass(Form("Track_Legs_%s_MCtruth", sigMCname.Data()));
528 // mc reconstructed
529 histos->AddClass(Form("Pair_%s", sigMCname.Data()));
530 histos->AddClass(Form("Track_Legs_%s", sigMCname.Data()));
531 }
532 }
533
ad957d2a 534 //add histograms to event class
535 if (cutDefinition==0) {
536 histos->AddClass("Event");
537 histos->UserHistogram("Event","","",300,-15.,15.,AliDielectronVarManager::kZvPrim);
538 histos->UserHistogram("Event","","",
539 100,-2.,2.,100,-2.,2.,AliDielectronVarManager::kXvPrim,AliDielectronVarManager::kYvPrim);
2e044207 540 histos->UserHistogram("Event","","",GetRunNumbers(),AliDielectronVarManager::kRunNumber);
bb9d988b 541 histos->UserProfile("Event","","", AliDielectronVarManager::kTracks, GetRunNumbers(), AliDielectronVarManager::kRunNumber);
542 histos->UserProfile("Event","","", AliDielectronVarManager::kPairs, GetRunNumbers(), AliDielectronVarManager::kRunNumber);
543
ad957d2a 544 }
545
546 //add histograms to Track classes
ad957d2a 547 histos->UserHistogram("Track","","",
a18c6da2 548 200,0,20.,AliDielectronVarManager::kPIn);
549
550 //general histograms per run number
551 histos->UserHistogram("Track","","",
552 400,0.2,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
553 histos->UserHistogram("Track","","",GetRunNumbers(),AliDielectronHelper::MakeLinBinning(100,-10.,10.),
554 AliDielectronVarManager::kRunNumber,AliDielectronVarManager::kTPCnSigmaEle);
555 histos->UserHistogram("Track","","",GetRunNumbers(),AliDielectronHelper::MakeLinBinning(100,-10.,10.),
556 AliDielectronVarManager::kRunNumber,AliDielectronVarManager::kTPCnSigmaEle);
557 histos->UserHistogram("Track","","",GetRunNumbers(),AliDielectronHelper::MakeLinBinning(100,-10.,10.),
558 AliDielectronVarManager::kRunNumber,AliDielectronVarManager::kITSnSigmaEle);
559 histos->UserHistogram("Track","","",GetRunNumbers(),AliDielectronHelper::MakeLinBinning(100,-10.,10.),
560 AliDielectronVarManager::kRunNumber,AliDielectronVarManager::kTOFnSigmaEle);
561 histos->UserHistogram("Track","","",GetRunNumbers(),AliDielectronHelper::MakeLinBinning(161,-0.5,161.5),
562 AliDielectronVarManager::kRunNumber,AliDielectronVarManager::kNclsTPC);
563 histos->UserHistogram("Track","","",GetRunNumbers(),AliDielectronHelper::MakeLinBinning(300,0.5,300.5),
564 AliDielectronVarManager::kRunNumber,AliDielectronVarManager::kNclsTRD);
565 histos->UserHistogram("Track","","",GetRunNumbers(),AliDielectronHelper::MakeLinBinning(150,0.,150.),
566 AliDielectronVarManager::kRunNumber,AliDielectronVarManager::kNaccTrckltsEsd10Corr);
567 histos->UserHistogram("Track","","",GetRunNumbers(),AliDielectronHelper::MakeLinBinning(5,-0.5,2.0),
568 AliDielectronVarManager::kRunNumber,AliDielectronVarManager::kTOFPIDBit);
569 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
ad957d2a 570 400,0.2,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
a18c6da2 571 // histos->UserHistogram("Track","","",GetRunNumbers(),
572 // 400,0.2,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
573 histos->UserHistogram("Track","","",
574 100,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSnSigmaEle);
ad957d2a 575 histos->UserHistogram("Track","","",
576 100,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
577 histos->UserHistogram("Track","","",
578 100,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
579 histos->UserHistogram("Track","","",
580 100,0.2,20.,100,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPro,kTRUE);
a18c6da2 581 histos->UserHistogram("Track","","",
582 200,0.2,20.,100,-15.,15.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
583 histos->UserHistogram("Track","","",
584 200,0.2,20.,100,0.,1.2,AliDielectronVarManager::kP,AliDielectronVarManager::kTOFbeta,kTRUE);
585 histos->UserHistogram("Track","","",
586 200,0.2,20.,200,-20.,20.,AliDielectronVarManager::kP,AliDielectronVarManager::kTOFnSigmaEle,kTRUE);
587 histos->UserHistogram("Track","","",
588 144,0.0,6.285,100,0.0,200,AliDielectronVarManager::kPhi,AliDielectronVarManager::kTPCsignal);
589 histos->UserHistogram("Track","","",
590 40,-1.0,1.0,100,0.0,200,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCsignal);
591 histos->UserHistogram("Track","","",
592 100,-5,5.,100,-5.,5.,AliDielectronVarManager::kTPCnSigmaEle,AliDielectronVarManager::kITSnSigmaEle);
593 histos->UserHistogram("Track","","",
594 100,-5,5.,100,-5.,5.,AliDielectronVarManager::kTOFnSigmaEle,AliDielectronVarManager::kTPCnSigmaEle);
ad957d2a 595 histos->UserHistogram("Track","","",
596 100,-2,2,144,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
597 histos->UserHistogram("Track","","",
598 160,-0.5,159.5,AliDielectronVarManager::kNclsTPC);
599 histos->UserHistogram("Track","","",
600 100,0.,10.,AliDielectronVarManager::kTPCchi2Cl);
601 histos->UserHistogram("Track","","",
602 150,-15,15,160,-0.5,159.5,AliDielectronVarManager::kYsignedIn,AliDielectronVarManager::kTPCsignalN);
603 histos->UserHistogram("Track","","",
604 1000,0.,0.,AliDielectronVarManager::kKinkIndex0);
a18c6da2 605
606 //rjim findable cluster vs pt
607 histos->UserHistogram("Track","","",
608 200.,0.0.,20.0, 161,-0.5,161.5,AliDielectronVarManager::kPt,AliDielectronVarManager::kNFclsTPCr);
609 //rjim frac find vs pt
610 histos->UserHistogram("Track","","",
611 200.0,0.0,20.0,160,0,1.1,AliDielectronVarManager::kPt,AliDielectronVarManager::kNFclsTPCrFrac);
612
613 // histos rjimenez 2nd part
614 //check tofbit
615
616 histos->UserHistogram("Track","","",5,-0.5,2.0,AliDielectronVarManager::kTOFPIDBit);
617
618 histos->UserHistogram("Track","","",
619 3.,-0.5,2.5, 200,0.,20.,AliDielectronVarManager::kTOFPIDBit,AliDielectronVarManager::kPt);
620
621 histos->UserHistogram("Track","","",
622 160,-0.5,159.5,AliDielectronVarManager::kNFclsTPCr);
623 histos->UserHistogram("Track","","",
624 160,0,1.1,AliDielectronVarManager::kNFclsTPCrFrac);
625
626 //rjimenez nsigma vseta
627 histos->UserHistogram("Track","","",
628 20,-1.0,1.0,100,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kITSnSigmaEle);
629
630 histos->UserHistogram("Track","","",
631 20,-1.0,1.0,100,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEle);
632
633 histos->UserHistogram("Track","","",
634 20,-1.0,1.0,100,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTOFnSigmaEle);
635 //rjimenez nsigma vs phi
636 histos->UserHistogram("Track","","",
637 20,0.0,7.0,100,-10.,10.,AliDielectronVarManager::kPhi,AliDielectronVarManager::kITSnSigmaEle);
638
639 histos->UserHistogram("Track","","",
640 20,0.0,7.0,100,-10.,10.,AliDielectronVarManager::kPhi,AliDielectronVarManager::kTPCnSigmaEle);
641
642 histos->UserHistogram("Track","","",
643 20,0.0,7.0,100,-10.,10.,AliDielectronVarManager::kPhi,AliDielectronVarManager::kTOFnSigmaEle);
644
645 //for now SPD tracklets but multiplicity should be implemented
646 histos->UserHistogram("Track","","",
647 100,0.0,100.,100,-10.,10.,AliDielectronVarManager::kNaccTrckltsEsd10Corr,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
648 histos->UserHistogram("Track","","",
649 100,0.0,100.,200,-20.,20.,AliDielectronVarManager::kNaccTrckltsEsd10Corr,AliDielectronVarManager::kTOFnSigmaEle,kTRUE);
650 //
651 histos->UserHistogram("Track","","",
652 200,-20,20,160,-0.5,159.5,AliDielectronVarManager::kYsignedIn,AliDielectronVarManager::kTPCsignalN);
653
654 histos->UserHistogram("Track","","",
655 200,-20.,20.,100,-10.,10.,AliDielectronVarManager::kYsignedIn,AliDielectronVarManager::kTPCnSigmaEle);
656
657 histos->UserHistogram("Track","","",
658 200,-20.,20.,200,0.2,20.,AliDielectronVarManager::kYsignedIn,AliDielectronVarManager::kPIn);
659 histos->UserHistogram("Track","","",
660 500,-1.,1.,AliDielectronVarManager::kImpactParXY);
661 histos->UserHistogram("Track","","",
662 600,-3.,3.,AliDielectronVarManager::kImpactParZ);
663 //inner and outer read out TPC clusters
664 histos->UserHistogram("Track","","",
665 70,0.0,7.0,160.,0.0,160.0,AliDielectronVarManager::kPhi,AliDielectronVarManager::kTPCclsIRO);
666 histos->UserHistogram("Track","","",
667 70,0.0,7.0,160.,0.0,160.0,AliDielectronVarManager::kPhi,AliDielectronVarManager::kTPCclsORO);
668 histos->UserHistogram("Track","","",
669 10000,0.0,1.0,AliDielectronVarManager::kM);
670 histos->UserHistogram("Track","","",
671 200,0.0,20.0,10000,0.0,1.0,AliDielectronVarManager::kPt,AliDielectronVarManager::kM);
672 histos->UserHistogram("Track","","",
673 300,0.,300.,AliDielectronVarManager::kNclsTRD);
674 histos->UserHistogram("Track","","",
675 200.,0.0.,20.0, 301,-0.5,300.5,AliDielectronVarManager::kPt,AliDielectronVarManager::kNclsTRD);
676 histos->UserHistogram("Track","","",
677 11,-0.5,10.5.,AliDielectronVarManager::kTRDntracklets);
678
679 histos->UserHistogram("Track","","",
680 200.,0.0.,20.0,11,-0.5,10.5,AliDielectronVarManager::kPt,AliDielectronVarManager::kTRDntracklets);
681
682 histos->UserHistogram("Track","","",
683 150.,-15.0.,15.0,20,0.,1.,AliDielectronVarManager::kYsignedIn,AliDielectronVarManager::kTRDprobEle);
684
685 histos->UserHistogram("Track","","",
686 150.,-15.0,15.0,20,0.,1.,AliDielectronVarManager::kYsignedIn,AliDielectronVarManager::kTRDprobPio);
687
688 histos->UserHistogram("Track","","",
689 200.,0.2,20.0,20,0.,1.,AliDielectronVarManager::kP,AliDielectronVarManager::kTRDprob2DEle);
690
691 histos->UserHistogram("Track","","",
692 200.,0.2,20.0,20,0.,1.,AliDielectronVarManager::kP,AliDielectronVarManager::kTRDprob2DPio);
693
694 histos->UserHistogram("Track","","",
695 8.,-0.5,7.5,AliDielectronVarManager::kTRDpidQuality);
696
697 histos->UserHistogram("Track","","",
698 100.,0.0,1.0,AliDielectronVarManager::kTRDpidEffLeg);
699
700 histos->UserHistogram("Track","","",
701 20,-1.0,1.0,70,-3.5,3.5,AliDielectronVarManager::kEta,AliDielectronVarManager::kTRDphi);
702
ad957d2a 703 histos->UserHistogram("Track","","",500,-1.,1.,AliDielectronVarManager::kImpactParXY);
704 histos->UserHistogram("Track","","",600,-3.,3.,AliDielectronVarManager::kImpactParZ);
705
706 //add histograms to Pair classes
707 histos->UserHistogram("Pair","","",
708 301,-.01,6.01,AliDielectronVarManager::kM);
709 histos->UserHistogram("Pair","","",
710 100,-1.,1.,AliDielectronVarManager::kY);
711 histos->UserHistogram("Pair","","",
712 100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
713
714 die->SetHistogramManager(histos);
715
716}
717
718//______________________________________________________________________________________
719void InitCF(AliDielectron* die, Int_t cutDefinition)
720{
721 //
722 // Setupd the CF Manager if needed
723 //
724
725 AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
726
727 //pair variables
728 cf->AddVariable(AliDielectronVarManager::kPt,"0.0, 1.0, 1.3, 2.0, 3.0, 5., 7.0, 10.0, 100.0");
729
730 cf->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10");
731 cf->AddVariable(AliDielectronVarManager::kY,"-1,-0.9,-0.8,-0.3,0,0.3,0.9,1.0");
732 cf->AddVariable(AliDielectronVarManager::kM,125,0.,125*.04); //40Mev Steps
733 cf->AddVariable(AliDielectronVarManager::kPairType,11,0,11);
734
735 //leg variables
736 cf->AddVariable(AliDielectronVarManager::kPt,"0.0, 0.8, 1.0, 1.1, 1.2, 1.3, 100.0",kTRUE);
737 cf->AddVariable(AliDielectronVarManager::kEta,"-1.,-0.9,-0.8,0,0.8,0.9,1.0",kTRUE);
738
739 //cf->AddVariable(AliDielectronVarManager::kITSLayerFirstCls,6,0,6,kTRUE);
740
2e044207 741 if (hasMC && 0){ //ATTENTION SWITCHED OFF
ad957d2a 742 cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);
743 cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);
744 cf->AddVariable(AliDielectronVarManager::kPdgCodeGrandMother,10000,-5000.5,4999.5,kTRUE);
2e044207 745 }
ad957d2a 746
2e044207 747 if(hasMC) {
ad957d2a 748 //only steps for efficiencies
749 cf->SetStepsForMCtruthOnly();
2e044207 750 //only in this case write MC truth info
751 if (cutDefinition==0){
752 cf->SetStepForMCtruth();
753 }
ad957d2a 754 }
2e044207 755 // cf->SetStepsForSignal();
ad957d2a 756
757 die->SetCFManagerPair(cf);
758}
759
760//______________________________________________________________________________________
761void SetupMCsignals(AliDielectron *die){
762 AliDielectronSignalMC* promptJpsi = new AliDielectronSignalMC("promptJpsi","Prompt J/psi"); // prompt J/psi (not from beauty decays)
763 promptJpsi->SetLegPDGs(11,-11);
764 promptJpsi->SetMotherPDGs(443,443);
765 promptJpsi->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons
766 promptJpsi->SetMothersRelation(AliDielectronSignalMC::kSame);
767 promptJpsi->SetFillPureMCStep(kTRUE);
768 promptJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
769 promptJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE);
770 promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE);
771 promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
772 die->AddSignalMC(promptJpsi);
773
774 AliDielectronSignalMC* promptJpsiNonRad = new AliDielectronSignalMC("promptJpsiNonRad","Prompt J/psi non-Radiative"); // prompt J/psi (not from beauty decays)
775 promptJpsiNonRad->SetLegPDGs(11,-11);
776 promptJpsiNonRad->SetMotherPDGs(443,443);
777 promptJpsiNonRad->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons
778 promptJpsiNonRad->SetMothersRelation(AliDielectronSignalMC::kSame);
779 promptJpsiNonRad->SetFillPureMCStep(kTRUE);
780 promptJpsiNonRad->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
781 promptJpsiNonRad->SetCheckBothChargesLegs(kTRUE,kTRUE);
782 promptJpsiNonRad->SetCheckBothChargesMothers(kTRUE,kTRUE);
783 promptJpsiNonRad->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
784 promptJpsiNonRad->SetJpsiRadiative(AliDielectronSignalMC::kIsNotRadiative);
785 die->AddSignalMC(promptJpsiNonRad);
786
787 AliDielectronSignalMC* promptJpsiRad = new AliDielectronSignalMC("promptJpsiRad","Prompt J/psi Radiative"); // prompt J/psi (not from beauty decays)
788 promptJpsiRad->SetLegPDGs(11,-11);
789 promptJpsiRad->SetMotherPDGs(443,443);
790 promptJpsiRad->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons
791 promptJpsiRad->SetMothersRelation(AliDielectronSignalMC::kSame);
792 promptJpsiRad->SetFillPureMCStep(kTRUE);
793 promptJpsiRad->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
794 promptJpsiRad->SetCheckBothChargesLegs(kTRUE,kTRUE);
795 promptJpsiRad->SetCheckBothChargesMothers(kTRUE,kTRUE);
796 promptJpsiRad->SetCheckBothChargesGrandMothers(kTRUE,kTRUE);
797 promptJpsiRad->SetJpsiRadiative(AliDielectronSignalMC::kIsRadiative);
798 die->AddSignalMC(promptJpsiRad);
799
800}
2e044207 801
802TVectorD *GetRunNumbers() {
803 // returns a vector with the runnumber used in the period
804
805 Double_t first=0;
806 Double_t last =1;
807
808 switch(iPeriod) {
809 case k10b: first=114737; last=117223; break;
810 case k10c: first=117777; last=121417; break;
811 case k10d: first=121692; last=126437; break;
812 case k10e: first=127102; last=130850; break;
813 case k10f: first=130931; last=135031; break;
814 case k10h: first=136831; last=139517; break;
815 case k11a: first=141052; last=146974; break;
816 case k11d: first=155838; last=159649; break;
817 case k11h: first=165772; last=170718; break;
818 case k12h: first=188720; last=192738; break;
819 }
820 // printf("iPeriod: %d \t %.0f-%.0f \n",iPeriod,first,last);
821 return (AliDielectronHelper::MakeLinBinning(last-first, first, last));
822}