1 void SetupTrackCutsDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD);
2 void SetupPairCutsDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD);
3 void InitHistogramsDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD);
4 void InitCFDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD);
6 AliESDtrackCuts *SetupESDtrackCutsDieleData(Int_t cutDefinition);
8 TString namesDieleData=("base-PairPt;base-PairPt+AnyLegEoverP;base+PairPt");
11 TObjArray *arrNamesDieleData=namesDieleData.Tokenize(";");
13 const Int_t nDie=arrNamesDieleData->GetEntries();
15 AliDielectron* ConfigCCbar_mk_pp(Int_t cutDefinition, Bool_t isAOD=kFALSE)
18 // Setup the instance of AliDielectron
21 // create the actual framework object
22 TString name=Form("%02d",cutDefinition);
23 if (cutDefinition<arrNamesDieleData->GetEntriesFast()){
24 name=arrNamesDieleData->At(cutDefinition)->GetName();
26 AliDielectron *diele = new AliDielectron(Form("%s",name.Data()),
27 Form("Track cuts: %s",name.Data()));
30 SetupTrackCutsDieleData(diele, cutDefinition, isAOD);
31 SetupPairCutsDieleData(diele, cutDefinition, isAOD);
35 // only if an AliDielectronHistos object is attached to the
36 // dielelectron framework histograms will be filled
38 InitHistogramsDieleData(diele, cutDefinition, isAOD);
39 InitCFDieleData(diele, cutDefinition, isAOD);
42 AliDielectronMixingHandler *mix=new AliDielectronMixingHandler;
43 mix->AddVariable(AliDielectronVarManager::kZvPrim,100,-20.,20.);
44 mix->SetMixType(AliDielectronMixingHandler::kAll);
46 diele->SetMixingHandler(mix);
52 //______________________________________________________________________________________
53 void SetupTrackCutsDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD)
56 // Setup the track cuts
59 AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND);
60 diele->GetTrackFilter().AddCuts(cuts);
64 //ESD quality cuts DielectronTrackCuts
66 diele->GetTrackFilter().AddCuts(SetupESDtrackCutsDieleData(cutDefinition));
68 AliDielectronTrackCuts *trkFilter = new AliDielectronTrackCuts("TrkFilter","TrkFilter"); //don't use -> cuts on primaries
69 trkFilter->SetAODFilterBit(AliDielectronTrackCuts::kTPCqual);//also used for R_AA
70 // trkFilter->SetAODFilterBit(AliDielectronTrackCuts::kTPCqualSPDany); //TPCqual + SPDany
71 // trkFilter->SetAODFilterBit(AliDielectronTrackCuts::kTPCqualSPDanyPIDele);
72 // cuts->AddCut(trkFilter);//don't use -> cuts on primaries -> too hard DCA cut
74 AliDielectronTrackCuts *trackCuts=new AliDielectronTrackCuts("trackCuts","trackCuts");
75 trackCuts->SetRequireTPCRefit(kTRUE);
76 trackCuts->SetRequireITSRefit(kTRUE);
77 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
78 trackCuts->SetMinNCrossedRowsOverFindable(0.7);
79 // diele->GetTrackFilter().AddCuts(trackCuts);
80 cuts->AddCut(trackCuts);
83 //Pt cut ----------------------------------------------------------
84 AliDielectronVarCuts *pt = new AliDielectronVarCuts("ptCut","pt cut");
85 pt->AddCut(AliDielectronVarManager::kPt,0.8,1e30);
86 pt->AddCut(AliDielectronVarManager::kKinkIndex0,0.);
87 pt->AddCut(AliDielectronVarManager::kNclsTPC,50.,160.);
88 pt->AddCut(AliDielectronVarManager::kEta,-0.9,0.9);
89 pt->AddCut(AliDielectronVarManager::kTPCchi2Cl,0.,4.);
90 pt->AddCut(AliDielectronVarManager::kImpactParXY,-1.5,1.5);
91 pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.);
95 // AOD additions since there are no AliESDtrackCuts -----------------
99 pt->AddCut(AliDielectronVarManager::kTPCnSigmaEle,-3.,4.);
102 // diele->GetTrackFilter().AddCuts(pt);
106 }//SetupTrackCutsDieleData
108 //______________________________________________________________________________________
109 void SetupPairCutsDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD)
111 // Setup the pair cuts
114 AliDielectronVarCuts *pairCut=new AliDielectronVarCuts("pairCut","pairCut");
115 pairCut->AddCut(AliDielectronVarManager::kY,-1.,1.);
116 if(cutDefinition==2)pairCut->AddCut(AliDielectronVarManager::kPt,4.8,100.);
117 diele->GetPairFilter().AddCuts(pairCut);
120 AliDielectronVarCuts *mycut = new AliDielectronVarCuts("CutEMCAL","cut for EMCal");
121 mycut->AddCut(AliDielectronVarManager::kEMCALnSigmaEle,-4.,20.);
122 mycut->AddCut(AliDielectronVarManager::kEMCALE,3.5,50.);
123 if(cutDefinition==1)mycut->AddCut(AliDielectronVarManager::kEMCALEoverP,0.6,10.);
126 AliDielectronPairLegCuts *varpair=new AliDielectronPairLegCuts();
127 varpair->GetLeg1Filter().AddCuts(mycut);
128 varpair->GetLeg2Filter().AddCuts(mycut);
129 varpair->SetCutType(AliDielectronPairLegCuts::kAnyLeg);
130 diele->GetPairFilter().AddCuts(varpair);
134 }//SetupPairCutsDieleData
136 //______________________________________________________________________________________
137 void InitHistogramsDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD)
140 // Initialise the histograms
143 //Setup histogram Manager
144 AliDielectronHistos *histos=new AliDielectronHistos(diele->GetName(),diele->GetTitle());
146 //Initialise histogram classes
147 histos->SetReservedWords("Track;Pair");
150 //to fill also track info from 2nd event loop until 2
151 for (Int_t i=0; i<2; ++i){
152 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
156 // to fill also mixed event histograms loop until 10
158 for (Int_t i=0; i<3; ++i){
159 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
164 for (Int_t i=0; i<3; ++i){
165 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i)));
168 //histos->AddClass(Form("Pair_%s",PairClassName(AliDielectron::kEv1PMRot)));
169 //histos->AddClass(Form("Track_Legs_%s",PairClassName(AliDielectron::kEv1PMRot)));
172 //add histograms to event class
173 if(cutDefinition == 0){
174 histos->AddClass("Event");
175 histos->UserHistogram("Event","VtxZ","Vertex Z;Z[cm]",500,-40.,40.,AliDielectronVarManager::kZvPrim);
176 histos->UserHistogram("Event","VtxYxVtxZ","Vertexyz;Z[cm];Y[cm]",500,-40.,40.,400,-0.5,0.5,AliDielectronVarManager::kZvPrim,AliDielectronVarManager::kYvPrim);
177 histos->UserHistogram("Event","VtxXxVtxZ","Vertexxz;Z[cm];X[cm]",500,-40.,40.,400,-0.5,0.5,AliDielectronVarManager::kZvPrim,AliDielectronVarManager::kXvPrim);
178 histos->UserHistogram("Event","VtxYxVtxX","Vertexxz;Z[cm];X[cm]",400,-0.5,0.5,400,-0.5,0.5,AliDielectronVarManager::kXvPrim,AliDielectronVarManager::kYvPrim);
183 //add histograms to Track classes
184 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",250,0,50.,AliDielectronVarManager::kPt,kTRUE);
185 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusters;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsTPC,kTRUE);
186 histos->UserHistogram("Track","TPCchi2Cl","Chi-2/Clusters TPC;Chi2/ncls number clusters;#tracks",100,0,10,AliDielectronVarManager::kTPCchi2Cl,kTRUE);
187 histos->UserHistogram("Track","TPCnFCls","Number of findable Clusters TPC;Number of findable Clusters TPC;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNFclsTPC,kTRUE);
188 histos->UserHistogram("Track","TPCnFClsfCross","fraction crossed rows/findable;fraction crossed rows/findable;#tracks",200,0.,2.,AliDielectronVarManager::kNFclsTPCfCross,kTRUE);
189 histos->UserHistogram("Track","TPCnFClsr","Number of findable Clusters(crossed rows) TPC;Number of findable crossed rows TPC;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNFclsTPCr,kTRUE);
190 histos->UserHistogram("Track","TPCnFClsrFrac","Number of found/findable Clusters TPC;Number of found/findable Clusters TPC;#tracks",200,0.,2.,AliDielectronVarManager::kNFclsTPCrFrac,kTRUE);
191 histos->UserHistogram("Track","TPCnFClsTPCfCross","Fraction of findable Clusters/Cr.rows TPC;Fraction of findable Clusters/Cr.rows TPC;#tracks",200,0.,2.,AliDielectronVarManager::kNFclsTPCfCross,kTRUE);
192 histos->UserHistogram("Track","TPCsignalN","Number of points for TPC Signal;TPC Npoints dEdx;#tracks",160,-0.5,159.5,AliDielectronVarManager::kTPCsignalN,kTRUE);
194 histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-1.5,1.5,AliDielectronVarManager::kImpactParXY,kTRUE);
195 histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",200,-4.,4.,AliDielectronVarManager::kImpactParZ,kTRUE);
197 histos->UserHistogram("Track","Eta_Phi","Eta vs Phi; Eta; Phi;#tracks",
198 100,-1.2,1.2,144,0,6.285,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi,kTRUE);
200 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
201 200,0.2,20.,800,20.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
203 histos->UserHistogram("Track","dEdx_Pt","dEdx;Pt [GeV];TPC signal (arb units);#tracks",
204 200,0.2,20.,800,20.,200.,AliDielectronVarManager::kPt,AliDielectronVarManager::kTPCsignal,kTRUE);
206 histos->UserHistogram("Track","TPCnSigmaEle_P","TPCnSigmaEle;P [GeV];TPCnSigmaEle;#tracks",
207 200,0.2,20.,800,-12.,12.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
209 histos->UserHistogram("Track","TPCnSigmaEle_Pt","TPCnSigmaEle;Pt [GeV];TPCnSigmaEle;#tracks",
210 200,0.2,20.,800,-12.,12.,AliDielectronVarManager::kPt,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
212 histos->UserHistogram("Track","TPCnSigmaEle_Phi","TPCnSigmaEle;#phi [rad];TPCnSigmaEle;#tracks",
213 200,0.,2*TMath::Pi(),800,-12.,12.,AliDielectronVarManager::kPhi,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
215 histos->UserHistogram("Track","TPCnSigmaEle_Eta","TPCnSigmaEle;#eta;TPCnSigmaEle;#tracks",
216 200,-1.,1.,800,-12.,12.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
219 histos->UserHistogram("Track","dEdx_Phi","dEdx vs phi;#phi [rad];TPC signal (arb units);#tracks",
220 200,0.,2*TMath::Pi(),800,20.,200.,AliDielectronVarManager::kPhi,AliDielectronVarManager::kTPCsignal,kTRUE);
222 histos->UserHistogram("Track","dEdx_Eta","dEdx vs eta;#eta;TPC signal (arb units);#tracks",
223 200,-1.,1.,800,20.,200.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCsignal,kTRUE);
227 histos->UserHistogram("Track","dEdx_nSigmaEMCal","dEdx vs nSigmaEMCal;NsigmaEmcal;TPC signal (arb units);NSigmaEMCAL",
228 200,-5.,5.,800,20.,200.,AliDielectronVarManager::kEMCALnSigmaEle,AliDielectronVarManager::kTPCsignal,kTRUE);
230 histos->UserHistogram("Track","dEdx_TPCnSigmaEle","dEdx vs TPCnSigmaEle;TPC signal electrons(arbunits);TPC number of sigmas Electrons;TPC signal (a.u.);#tracks",
231 100,-10.,10.,800,20.,200.,AliDielectronVarManager::kTPCnSigmaEle,AliDielectronVarManager::kTPCsignal,kTRUE);
233 histos->UserHistogram("Track","dEdx_EoverP","dEdx;EoverP;TPC signal (arbunits);E/P",100,0.,5.,800,20.,200.,AliDielectronVarManager::kEMCALEoverP,AliDielectronVarManager::kTPCsignal,kTRUE);
235 histos->UserHistogram("Track","nSigmaEMCal_EoverP","NsigmaEmcal;EoverP;NSigmaEMCAL;E/P",100,0.,5.,200,-5.,5.,AliDielectronVarManager::kEMCALEoverP,AliDielectronVarManager::kEMCALnSigmaEle,kTRUE);
237 histos->UserHistogram("Track","EMCal_E","EmcalE;Cluster Energy [GeV];#Clusters",200,0.,40.,AliDielectronVarManager::kEMCALE,kTRUE);
239 histos->UserHistogram("Track","ITS_FirstCls","ITS First Layer;ITS First Layer;#Entries",6,0.,6.,AliDielectronVarManager::kITSLayerFirstCls,kTRUE);
241 //add histograms to Pair classes
242 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
243 251,-.01,5.01,AliDielectronVarManager::kM);
244 histos->UserHistogram("Pair","InvMass2D","Inv.Mass;Pt [GeV]; Inv. Mass [GeV]",
245 20,0.,20.,251,-.01,5.01,AliDielectronVarManager::kPt,AliDielectronVarManager::kM);
249 histos->UserHistogram("Pair","InvMasslongVarBin","Inv.Mass;Inv. Mass [GeV];#pairs",
250 "0. , 0.025, 0.05 , 0.075 ,0.1 ,0.15 , 0.2 , 0.25 , 0.3 ,
251 0.4 , 0.5 , 0.6, 0.65 , 0.688 , 0.725, 0.75, 0.775, 0.8 , 0.85 ,
252 0.95, 0.975 , 1.0 , 1.025 , 1.05, 1.125 , 1.25 , 1.5 , 1.75 , 2.0 ,
253 2.25, 2.5 , 2.75 , 2.85, 2.95,3.05, 3.1 , 3.15 ,
254 3.3 , 3.4 ,3.5, 3.6, 3.7,3.8,3.9, 4.0,4.5, 5.0,6.0,7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0",AliDielectronVarManager::kM);
258 histos->UserHistogram("Pair","InvMasslong","Inv.Mass;Inv. Mass [GeV];#pairs",
259 301,-.02,15.02,AliDielectronVarManager::kM);
261 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
262 50,-1.,1.,AliDielectronVarManager::kY);
263 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
264 50,0.,3.15,AliDielectronVarManager::kOpeningAngle);
266 histos->UserHistogram("Pair","PseudoProperTime","Pseudoproper decay length; pseudoproper-decay-length[#mum];Entries/40#mum",
267 150,-0.3.,0.3,AliDielectronVarManager::kPseudoProperTime);
269 histos->UserHistogram("Pair","Chi2/NDF","#Chi^{2}/NDF;#Chi^{2}/NDF",
270 100, 0., 20., AliDielectronVarManager::kChi2NDF);
273 diele->SetHistogramManager(histos);
277 void InitCFDieleData(AliDielectron *diele, Int_t cutDefinition, Bool_t isAOD)
280 // Setupd the CF Manager if needed
283 AliDielectronCF *cf=new AliDielectronCF(diele->GetName(),diele->GetTitle());
286 // cf->AddVariable(AliDielectronVarManager::kPt,"2.0,3.0,4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0,15.0,16.0,17.0,18.0,19.0,20.0,30.0,50.0, 100.0");
287 cf->AddVariable(AliDielectronVarManager::kM,400,0.,10.);//also try variable bi sizes later...
289 cf->AddVariable(AliDielectronVarManager::kPairType,12,0,12);//-> check last 4 bins
290 // cf->AddVariable(AliDielectronVarManager::kPairType,8,0.,8.);
291 cf->AddVariable(AliDielectronVarManager::kOpeningAngle,31,-0.15,3.15);
292 cf->AddVariable(AliDielectronVarManager::kEta,40,-1.,1.);
293 cf->AddVariable(AliDielectronVarManager::kY,40,-1.,1.);
294 cf->AddVariable(AliDielectronVarManager::kPhi,20,0.,20*0.32);
295 // cf->AddVariable(AliDielectronVarManager::kPseudoProperTime,300,-0.3,0.3);
296 // cf->AddVariable(AliDielectronVarManager::kPseudoProperTimeErr,200,0.,0.1);
297 // cf->AddVariable(AliDielectronVarManager::kPseudoProperTimeResolution,400,-0.1,0.1);
298 // cf->AddVariable(AliDielectronVarManager::kPseudoProperTimePull,400,-0.1,0.1);
299 // cf->AddVariable(AliDielectronVarManager::kChi2NDF,40, 0., 20.);
301 //global leg variables
302 cf->AddVariable(AliDielectronVarManager::kP,50,0.,5.,kTRUE);
303 cf->AddVariable(AliDielectronVarManager::kPt,"0.,0.5,0.75,0.9,1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 2.0, 3.0, 4.0, 8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,30.0,50.0,100.0",kTRUE);
304 cf->AddVariable(AliDielectronVarManager::kNclsTPC,"65, 70, 75, 80, 85, 90, 95, 100, 120, 160",kTRUE);
305 cf->AddVariable(AliDielectronVarManager::kTPCchi2Cl,100, 0., 10.,kTRUE);
306 cf->AddVariable(AliDielectronVarManager::kTPCsignalN,160,-0.5,159.5,kTRUE);
307 cf->AddVariable(AliDielectronVarManager::kEta,44,-1.2,1.2,kTRUE);
308 cf->AddVariable(AliDielectronVarManager::kPhi,64,0.,64*0.1,kTRUE);
309 cf->AddVariable(AliDielectronVarManager::kImpactParXY,200,-1.,1.,kTRUE);
310 cf->AddVariable(AliDielectronVarManager::kImpactParZ,600,-3.,3.,kTRUE);
312 cf->AddVariable(AliDielectronVarManager::kTPCsignal,"40.,50.,55.,60.,65.,68.,70.,72.,75.,80.,90.,100.,110.,200.",kTRUE);
313 cf->AddVariable(AliDielectronVarManager::kTPCnSigmaEle,20,-3.,4.,kTRUE);
314 cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPio,8,1.,4.5,kTRUE);
315 cf->AddVariable(AliDielectronVarManager::kTPCnSigmaPro,8,0.,4.,kTRUE);
317 cf->AddVariable(AliDielectronVarManager::kTOFnSigmaEle,20,-3.5,4.,kTRUE);
318 cf->AddVariable(AliDielectronVarManager::kTOFnSigmaPio,8,0.,4.,kTRUE);
319 cf->AddVariable(AliDielectronVarManager::kITSLayerFirstCls,6,0.,6.,kTRUE);
322 cf->AddVariable(AliDielectronVarManager::kEMCALE,20,0.,20.,kTRUE);
323 cf->AddVariable(AliDielectronVarManager::kEMCALnSigmaEle,50,-5.,5.,kTRUE);
324 cf->AddVariable(AliDielectronVarManager::kEMCALNCells,50,0,50,kTRUE);
325 cf->AddVariable(AliDielectronVarManager::kEMCALEoverP,"0.6,0.7,0.8,0.9,1.1,1.2,1.3,1.4,1.8,2.0,4.0",kTRUE);
328 // cf->AddVariable(AliDielectronVarManager::kZvPrim,20,-20.,20.);
331 diele->SetCFManagerPair(cf);
340 //______________________________________________________________________________________
341 AliESDtrackCuts *SetupESDtrackCutsDieleData(Int_t cutDefinition)
344 // Setup default AliESDtrackCuts
346 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
348 // basic track quality cuts (basicQ)
349 esdTrackCuts->SetMaxDCAToVertexZ(3.0);
350 esdTrackCuts->SetMaxDCAToVertexXY(1.0);
352 esdTrackCuts->SetEtaRange( -0.9 , 0.9 );
354 esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
355 esdTrackCuts->SetRequireITSRefit(kTRUE);
356 esdTrackCuts->SetRequireTPCRefit(kTRUE);
358 esdTrackCuts->SetPtRange(.8,1e30);
360 esdTrackCuts->SetMinNClustersTPC(70);
361 esdTrackCuts->SetMaxChi2PerClusterTPC(4);
364 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);