2 void InitHistograms(AliDielectron *die, Int_t cutDefinition);
3 void InitCF(AliDielectron* die, Int_t cutDefinition);
5 void InitMCCuts(Bool_t mcStatus, Int_t nPDGC, TArrayI* pdgC);
7 void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition);
9 void SetupPairCuts(AliDielectron *die, Int_t cutDefinition);
12 AliESDtrackCuts *SetupESDtrackCuts(Int_t cutDefinition);
13 AliESDtrackCuts *SetupESDtrackCutsITSSA(Int_t cutDefinition);
15 TString names=("Base");
16 TObjArray *arrNames=names.Tokenize(";");
17 const Int_t nDie=arrNames->GetEntries();
18 Bool_t MCenabled=kFALSE;
20 Bool_t kMix = 0; //Event mixing (M.Koehler)
22 AliDielectron* ConfigLowMassDiEOezdemir(Int_t cutDefinition,Bool_t hasMC=kFALSE)
25 // Setup the instance of AliDielectron
30 // create the actual framework object
32 TString name=Form("%02d",cutDefinition);
33 if ((cutDefinition)<arrNames->GetEntriesFast()){
34 name=arrNames->At((cutDefinition))->GetName();
37 //thisCut only relevant for MC:
39 new AliDielectron(Form
41 Form("Track cuts: %s",name.Data()));
42 //Event mixing (M.Koehler)
44 AliDielectronMixingHandler *mix = new AliDielectronMixingHandler;
45 mix->SetMixType(AliDielectronMixingHandler::kAll);
46 mix->AddVariable(AliDielectronVarManager::kZvPrim,"-10., -7.5, -5., -2.5 , 0., 2.5, 5., 7.5 , 10.");
47 mix->AddVariable(AliDielectronVarManager::kNacc,"0,10000");
49 die->SetMixingHandler(mix);
53 SetupTrackCuts(die,cutDefinition);
54 SetupPairCuts(die,cutDefinition);
57 // only if an AliDielectronHistos object is attached to the
58 // dielectron framework histograms will be filled
60 InitHistograms(die,cutDefinition);
62 // the last definition uses no cuts and only the QA histograms should be filled!
63 //InitCF(die,cutDefinition);
65 AliDielectronTrackRotator *rot=new AliDielectronTrackRotator;
66 rot->SetIterations(1);
67 rot->SetConeAnglePhi(TMath::Pi());
68 die->SetTrackRotator(rot);
73 //______________________________________________________________________________________
74 void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition)
77 // Setup the track cuts
83 // ============ DALITZ REJECTION CUTS ====================
85 AliDielectronCutGroup* cgITSTPC = new AliDielectronCutGroup("cgITSTPC","cgITSTPC",AliDielectronCutGroup::kCompAND);
86 AliDielectronCutGroup* cgITSSA = new AliDielectronCutGroup("cgITSSA","cgITSSA",AliDielectronCutGroup::kCompAND);
88 cgITSTPC->AddCut(SetupESDtrackCuts(cutDefinition));
90 AliDielectronPID *pidITSTPC = new AliDielectronPID("TPCpre","TPCpre");
91 pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.);
92 cgITSTPC->AddCut(pidITSTPC);
96 cgITSSA->AddCut(SetupESDtrackCutsITSSA(cutDefinition));
98 AliDielectronPID *pidITSSA = new AliDielectronPID("pidITSSA","pidITSSA");
99 //pidITSSA->AddCut(AliDielectronPID::kITS,AliPID::kPion,-999999.,-2.5,0.0,0.15,kFALSE ); //18.01.11: electron ID@lowpT
100 //pidITSSA->AddCut(AliDielectronPID::kITS,AliPID::kElectron,-3.,3.);
101 cgITSSA->AddCut(pidITSSA);
104 // ================Setup PID-Cuts (for final acceptance)===============
106 AliDielectronVarCuts *pt = new AliDielectronVarCuts("P>.2","P>.2");
107 pt->AddCut(AliDielectronVarManager::kP,.2,1e30);
109 // + [2] added for Dec2010 Cut!
110 TF1 *lowerCut = new TF1("lowerCut", "[0] * TMath::Exp([1]*x) + [2]", 0, 20);
112 lowerCut->SetParameter(0, -2.7);
113 lowerCut->SetParameter(1, -0.4357);
115 /* 18.01.2011 ALiHFEpid.cxx */
116 lowerCut->SetParameter(0,-3.7);
117 lowerCut->SetParameter(1,-0.8);
118 lowerCut->SetParameter(2,-0.35);
120 if (MCenabled) { //overwrite parameters
121 lowerCut->SetParameter(0,-2.5);
122 lowerCut->SetParameter(2,-2.2);
125 //___________________________________________
127 AliDielectronPID *pidTPChardTOF = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE");
128 pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,lowerCut,3.,0.0,100.,kFALSE);
129 pidTPChardTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 100., kFALSE );
131 //___________________________________________
132 AliDielectronPID *pidTT = new AliDielectronPID("TPC-TOF","TPC-TOF");
133 pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5,3.,0.2,100.,kFALSE);
134 pidTT->AddCut( AliDielectronPID::kTOF ,AliPID::kElectron , -2. , 2. , 0.4 , 5., kFALSE );
135 pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-100.,4.,0.2,100.,kTRUE);
137 //___________________________________________
138 AliDielectronPID *pidTTnew = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE");
139 pidTTnew->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5,3.,0.2,100.,kFALSE);
140 pidTTnew->AddCut( AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.4 , 5., kFALSE );
141 pidTTnew->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-100.,4.,0.2,100.,kTRUE);
143 //___________________________________________
144 AliDielectronPID *pidTTonlyKP = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE");
145 pidTTonlyKP->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,lowerCut,3.,0.0,100.,kFALSE);
146 pidTTonlyKP->AddCut( AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.4 , 100., kFALSE );
147 pidTTonlyKP->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3,3.,0.,0.4,kTRUE);
148 pidTTonlyKP->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3,3.,0.,0.4,kTRUE);
150 //___________________________________________
152 AliDielectronPID *pidTTupp = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE");
153 pidTTupp->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.,3.,0.0,100.,kFALSE);
154 pidTTupp->AddCut( AliDielectronPID::kTOF ,AliPID::kElectron , -1. , 3. , 0.4 , 100., kFALSE );
155 pidTTupp->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-1,3.,0.,0.4,kTRUE);
156 pidTTupp->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-1,3.,0.,0.4,kTRUE);
157 pidTTupp->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-1,3.,0.,0.4,kTRUE);
158 //___________________________________________
160 AliDielectronPID *pidITS = new AliDielectronPID("ITS PID","ITS PID");
161 //pidITS->AddCut(AliDielectronPID::kITS,AliPID::kElectron,-1.,1.,0.0,100.,kFALSE );
162 pidITS->AddCut(AliDielectronPID::kITS,AliPID::kPion,-999999.,-2.5,0.0,0.15,kFALSE ); //18.01.11: electron ID@lowpT
163 pidITS->AddCut(AliDielectronPID::kITS,AliPID::kPion,-2.,2.,0.15,0.3,kTRUE ); //18.01.11: electron ID@lowpT
164 //move to config section, to give additional point in CF
165 pidITS->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,lowerCut,3.,0.0,100.,kFALSE);
166 pidITS->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.0,100.,kTRUE);
167 pidITS->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.3 , 100., kFALSE );
169 AliDielectronVarCuts *ptITS = new AliDielectronVarCuts("Pt>.05","Pt>.05");
170 ptITS->AddCut(AliDielectronVarManager::kPt,.05,1e30);
171 //___________________________________________
173 AliDielectronPID *pidJpsi = new AliDielectronPID("TPC Jpsi-like","TPC Jpsi-like");
174 pidJpsi->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,lowerCut,3.,kFALSE);
175 pidJpsi->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3,3.,kTRUE); //Difference: HFE-like inclusion
176 pidJpsi->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,kTRUE); //Difference: HFE-like inclusion
177 pidJpsi->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3,3.,kTRUE); //Difference: HFE-like inclusion
179 //___________________________________________
180 AliDielectronPID *pidTPConlyE = new AliDielectronPID("TPC PID","TPC PID");
181 pidTPConlyE->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5,3.,0.,100.,kFALSE);
183 //___________________________________________
184 AliDielectronPID *pidTPC = new AliDielectronPID("TPC PID","TPC PID");
185 pidTPC->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5,3.,0.,100.,kFALSE);
186 pidTPC->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-1.5,1.5,0.,100.,kTRUE);
187 pidTPC->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-1.5,1.5,0.,100.,kTRUE);
188 pidTPC->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-1.5,1.5,0.,100.,kTRUE);
191 // =============CREATE GROUPS FOR ==============
194 //Soft cut conditions for initial single-track analysis
195 AliDielectronCutGroup* cgInitialTrackFilter = new AliDielectronCutGroup("cgInitialTrackFilter","cgInitialTrackFilter",AliDielectronCutGroup::kCompOR);
196 cgInitialTrackFilter->AddCut(cgITSTPC);
197 cgInitialTrackFilter->AddCut(cgITSSA);
200 //Setup possible CutGroups for Step2
204 AliDielectronCutGroup* cgSecondTrackFilterITS = new AliDielectronCutGroup("cgSecondTrackFilterITS","cgSecondTrackFilterITS",AliDielectronCutGroup::kCompAND);
205 cgSecondTrackFilterITS->AddCut(cgITSTPC);
206 cgSecondTrackFilterITS->AddCut(pidITS);
207 cgSecondTrackFilterITS->AddCut(ptITS);
210 //Config 6: TPC-TOF classic rej. only kaon & proton
211 AliDielectronCutGroup* cgSecondTrackFilterPIDTPConlyKP = new AliDielectronCutGroup("cgPIDTPConlyKP","cgPIDTPConlyKP",AliDielectronCutGroup::kCompAND);
212 cgSecondTrackFilterPIDTPConlyKP->AddCut(pt);
213 cgSecondTrackFilterPIDTPConlyKP->AddCut(SetupESDtrackCuts(cutDefinition));
214 cgSecondTrackFilterPIDTPConlyKP->AddCut(pidTTonlyKP);
217 //Config 0: TPC-TOF classic
218 AliDielectronCutGroup* cgSecondTrackFilterPIDTPCclassic = new AliDielectronCutGroup("cgPIDTPCclassic","cgPIDTPCclassic",AliDielectronCutGroup::kCompAND);
219 cgSecondTrackFilterPIDTPCclassic->AddCut(SetupESDtrackCuts(cutDefinition));
220 //cgSecondTrackFilterPIDTPCclassic->AddCut(pidTT);
222 //Config 1: TPC-TOF Classic with -1.5/3 sigma (soft TOF, TPC exclusion)
223 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
224 cgSecondTrackFilterPIDTPC->AddCut(SetupESDtrackCuts(cutDefinition));
225 cgSecondTrackFilterPIDTPC->AddCut(pidTTnew);
227 //Config 2: TPC only electrons
228 AliDielectronCutGroup* cgSecondTrackFilterPIDTPConlyE = new AliDielectronCutGroup("cgPIDTPConlyE","cgPIDTPConlyE",AliDielectronCutGroup::kCompAND);
229 cgSecondTrackFilterPIDTPConlyE->AddCut(SetupESDtrackCuts(cutDefinition));
230 cgSecondTrackFilterPIDTPConlyE->AddCut(pidTPConlyE);
232 //TPC (kaon, proton, pion exclusion)
233 AliDielectronCutGroup* cgSecondTrackFilterPIDTPCSA = new AliDielectronCutGroup("cgPIDTPCSA","cgPIDTPCSA",AliDielectronCutGroup::kCompAND);
234 cgSecondTrackFilterPIDTPCSA->AddCut(SetupESDtrackCuts(cutDefinition));
235 cgSecondTrackFilterPIDTPCSA->AddCut(pidTPC);
238 AliDielectronCutGroup* cgSecondTrackFilterJpsi = new AliDielectronCutGroup("cgSecondTrackFilterJpsi","cgSecondTrackFilterJpsi",AliDielectronCutGroup::kCompAND);
239 cgSecondTrackFilterJpsi->AddCut(pt);
240 cgSecondTrackFilterJpsi->AddCut(pidJpsi);
241 cgSecondTrackFilterJpsi->AddCut(cgITSTPC);
243 AliDielectronCutGroup* cgSecondTrackFilterCombinedTPC= new AliDielectronCutGroup("cgSecondTrackFilterCombinedTPC","cgSecondTrackFilterCombinedTPC",AliDielectronCutGroup::kCompOR);
244 cgSecondTrackFilterCombinedTPC->AddCut(cgSecondTrackFilterPIDTPC);
245 cgSecondTrackFilterCombinedTPC->AddCut(cgSecondTrackFilterJpsi);
249 //Correct BG scheme for Combinatorial BG
250 //die->SetPreFilterUnlikeOnly();
251 die->SetPreFilterAllSigns();
252 die->SetUseKF(kFALSE);
258 // if ( cutDefinition ==0 ) {
259 // //Step1: TrackFilter, nur grob
260 // die->GetTrackFilter().AddCuts(cgInitialTrackFilter);
261 // //Step2: "Final" PID
262 // die->GetPairPreFilterLegs().AddCuts(cgSecondTrackFilterPIDTPC);
266 if ( cutDefinition ==0 ) {
267 die->GetTrackFilter().AddCuts(cgSecondTrackFilterPIDTPC);
271 //______________________________________________________________________________________
273 void SetupPairCuts(AliDielectron *die, Int_t cutDefinition)
276 // Setup the pair cuts
280 if(cutDefinition == 0){
282 AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","conversion tagging");
283 noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE);
284 die->GetTrackFilter().AddCuts(noconv);
287 // AliDielectronVarCuts *RapidityCut=new AliDielectronVarCuts("RapidityCut","RapidityCut");
288 // RapidityCut->AddCut(AliDielectronVarManager::kY, -0.8 , 0.8);
289 // die->GetPairFilter().AddCuts(RapidityCut);
291 AliDielectronVarCuts *PhiV = new AliDielectronVarCuts("PhiV","PhiV");//mass and Phiv together
292 PhiV->AddCut(AliDielectronVarManager::kM, 0.0 , 0.05);
293 PhiV->AddCut(AliDielectronVarManager::kPhivPair, 2.5 , 3.2 );
294 die->GetPairPreFilter().AddCuts(PhiV);
296 AliDielectronVarCuts *PhiV2 = new AliDielectronVarCuts("PhiV2","PhiV2");//mass and Phiv together
297 PhiV2->AddCut(AliDielectronVarManager::kM, 0.05 , 1000.);
299 AliDielectronCutGroup* pairCutsCG2 =new AliDielectronCutGroup("pairCutsCG2","pairCutsCG2",AliDielectronCutGroup::kCompOR);
300 pairCutsCG2->AddCut(PhiV);
301 pairCutsCG2->AddCut(PhiV2);
302 die->GetPairFilter().AddCuts(pairCutsCG2);
306 AliDielectronVarCuts *mcpid =new AliDielectronVarCuts("mcpid","mcpid");
307 mcpid->SetCutType(AliDielectronVarCuts::kAny);
308 mcpid->AddCut(AliDielectronVarManager::kPdgCode, 11);
309 mcpid->AddCut(AliDielectronVarManager::kPdgCode, -11);
310 die->GetTrackFilter().AddCuts(mcpid);
312 AliDielectronVarCuts *MCnoConv =new AliDielectronVarCuts("MCnoConv","MCnoConv");
313 MCnoConv->AddCut(AliDielectronVarManager::kPdgCodeMother, 22,kTRUE);
314 die->GetTrackFilter().AddCuts(MCnoConv);
321 //______________________________________________________________________________________
322 AliESDtrackCuts *SetupESDtrackCuts(Int_t cutDefinition)
325 // Setup default AliESDtrackCuts
327 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
328 //esdTrackCuts->SetDCAToVertex2D(kTRUE);
330 esdTrackCuts->SetMaxDCAToVertexZ(3.0);
331 esdTrackCuts->SetMaxDCAToVertexXY(1.0);
332 //esdTrackCuts->SetMaxNsigmaToVertex(3.0);
334 esdTrackCuts->SetPtRange( 0.2 , 100.0);
335 esdTrackCuts->SetEtaRange( -0.8 , 0.8 );
336 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
337 esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
338 esdTrackCuts->SetDCAToVertex2D(kFALSE);
340 esdTrackCuts->SetRequireITSRefit(kTRUE);
341 //esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kBoth); //SPDboth
342 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); //Base
343 //esdTrackCuts->SetMinNClustersITS(4); // ITSCls4
344 esdTrackCuts->SetMinNClustersITS(3); //Base
346 esdTrackCuts->SetRequireTPCRefit(kTRUE);
347 //esdTrackCuts->SetMinNClustersTPC(100); //TPCCls100
348 esdTrackCuts->SetMinNClustersTPC(80); //Base
351 //esdTrackCuts->SetMinNCrossedRowsTPC(120); //TPCCrsR120
352 esdTrackCuts->SetMinNCrossedRowsTPC(100); //Base
354 esdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.5);
355 esdTrackCuts->SetMaxChi2PerClusterTPC(4);
360 //______________________________________________________________________________________
362 AliESDtrackCuts *SetupESDtrackCutsITSSA(Int_t cutDefinition)
365 // Setup default AliESDtrackCuts
367 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts;
368 esdTrackCuts->SetDCAToVertex2D(kTRUE);
370 esdTrackCuts->SetMaxDCAToVertexZ(3.0);
371 esdTrackCuts->SetMaxDCAToVertexXY(1.0);
373 esdTrackCuts->SetEtaRange( -0.84 , 0.84 );
375 esdTrackCuts->SetPtRange( 0.0, 200.);
377 esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
378 esdTrackCuts->SetRequireITSRefit(kTRUE);
379 esdTrackCuts->SetRequireITSStandAlone(kTRUE);
381 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
382 esdTrackCuts->SetMinNClustersITS(3); //PhotonGroup-Dalitz: 2?!
388 //______________________________________________________________________________________
390 void InitHistograms(AliDielectron *die, Int_t cutDefinition)
393 // Initialise the histograms
396 //Setup histogram classes
397 AliDielectronHistos *histos=
398 new AliDielectronHistos(die->GetName(),
403 //Initialise histogram classes
404 histos->SetReservedWords("Track;Pair");
405 //histos->SetReservedWords("Track");
408 histos->AddClass("Event");
412 //to fill also track info from 2nd event loop until 2
413 for (Int_t i=0; i<2; ++i){
414 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
418 // to fill also mixed event histograms loop until 10
420 for (Int_t i=0; i<3; ++i){
421 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
426 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3))); //ME ++
427 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4)));//ME -+
428 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6)));//ME +-
429 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7))); // ME --
432 //if(kRot)histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(10)));//Rot
435 //add histograms to event class
436 histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events",1,0,1,AliDielectronVarManager::kNevents);
437 histos->UserHistogram("Event","ZVertex","ZVertex;ZVertex/cm",480,-12.,12.,AliDielectronVarManager::kZvPrim);
438 histos->UserHistogram("Event","nESDTracks","ESD tracks;ESD tracks;Number events",100,0,200,AliDielectronVarManager::kTracks);
439 histos->UserHistogram("Event","Nacc","Number of accepted tracks;Number events",100,0,200,AliDielectronVarManager::kNacc);
440 histos->UserHistogram("Event","NVtxContrib","Number of Vertex Contributor;NVtx;Number events",100,0,100,AliDielectronVarManager::kNVtxContrib);
443 //add histograms to Track classes
444 histos->UserHistogram("Track","P","P;P [GeV];#tracks",500,0.,10.,AliDielectronVarManager::kPIn);
445 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",500,0.,10.,AliDielectronVarManager::kPt);
446 histos->UserHistogram("Track","Eta","Eta; Eta ;#tracks",100,-1.,1.,AliDielectronVarManager::kEta);
447 histos->UserHistogram("Track","Phi","Phi; Phi ;#tracks",640,0.,6.4,AliDielectronVarManager::kPhi);
450 histos->UserHistogram("Track","Eta_phi","Eta vs Phi;Eta;Phi",100,-1.,1.,320,0.,6.4,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
451 histos->UserHistogram("Track","Eta_pt","Eta vs Pt;Eta;Pt",100,-1.,1.,500,0.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kPt);
452 histos->UserHistogram("Track","ImpParXY_Pt","ImpParXY_Pt; Pt; ÍmpParXY",500,0.,10.,500,-5.,5.,AliDielectronVarManager::kPt,AliDielectronVarManager::kImpactParXY);
453 histos->UserHistogram("Track","ImpParZ_Pt","ImpParZ_Pt; Pt; ÍmpParZ",500,0.,10.,500,-5.,5.,AliDielectronVarManager::kPt,AliDielectronVarManager::kImpactParZ);
457 histos->UserHistogram("Track","ITSchi2Cl_Mom","ITS Chi2 vs Momentum;Mom;ITS chi2",500,0.,5.,50,0.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSchi2Cl);
458 histos->UserHistogram("Track","NclsITS_Mom",";Mom;kNclsITS",500,0.,5.,7,0,7,AliDielectronVarManager::kPIn,AliDielectronVarManager::kNclsITS);
461 histos->UserHistogram("Track","TPCsignalNfrac_Mom",";fraction TPCSignalN/TPCncls vs Momentum;Mom;TPCSignalN/TPCncls",500,0.,5.,60,0.,1.2,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignalNfrac);
462 histos->UserHistogram("Track","TPCchi2Cl_Mom","TPC Chi2 vs Momentum;Mom;TPC Chi2",500,0.,10.,100,0,5,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCchi2Cl);
463 histos->UserHistogram("Track","TPCclsDiff_Mom","kTPCclsDiff vs Momentum;Mom;kTPCclsDiff",500,0.,10.,100,-10,10,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCclsDiff);
464 histos->UserHistogram("Track","FindableTPCcls_Mom","kNFclsTPC vs Momentum;Mom;kNFclsTPC",500,0.,10.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kNFclsTPC);
465 histos->UserHistogram("Track","TPCcls_Mom","kNclsTPC vs Momentum;Mom;kNclsTPC",500,0.,10.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kNclsTPC);
466 histos->UserHistogram("Track","kNclsSFracTPC_Mom","kNclsSFracTPC vs Momentum;Mom;kTPCclsSFrac",500,0.,10.,1000,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kNclsSFracTPC);
467 histos->UserHistogram("Track","kNFclsTPCrFrac_Mom","kNFclsTPCrFrac vs Momentum;Mom;kNFclsTPCrFrac",500,0.,10.,60,0.,1.2.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kNFclsTPCrFrac);
470 histos->UserHistogram("Track","TOFbeta_Mom","kTOFbeta vs Momentum;Mom;TOFbeta",500,0.,5.,120,0.,1.2,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta);
471 histos->UserHistogram("Track","TOFPIDBit_Mom","kTOFPIDBit vs Momentum;Mom;TOFPIDbit",500,0.,5.,2,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFPIDBit);
474 histos->UserHistogram("Track","ITSnSigma_MomPio","ITS number of sigmas Pion vs Momentum;Mom;ITSsigmaPion",500,0.,5.,1000,-20,20,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSnSigmaPio);
475 histos->UserHistogram("Track","TPCnSigma_MomPio","TPC number of sigmas Pions vs Momentum;Mom;TPCsigmaPion",500,0.,5.,1000,-20,20,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio);
477 histos->UserHistogram("Track","ITSnSigma_MomEle","ITS number of sigmas Electrons vs Momentum;Mom;ITSsigmaEle",500,0.,5.,800,-40,40,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSnSigmaEle);
478 histos->UserHistogram("Track","TPCnSigma_MomEle","TPC number of sigmas Electrons vs Momentum;Mom;TPCsigmaEle",1000,0.,10.,800,-40,40,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle);
479 histos->UserHistogram("Track","TOFnSigma_MomEle","TOF number of sigmas Electrons vs Momentum;Mom;TOFsigmaEle",500,0.,5.,800,-40,40,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaEle);
481 histos->UserHistogram("Track","ITSdEdx_P","dEdx;P [GeV];ITS signal (arb units) vs Momentum;Mom;ITSsignal", 500,0,5,800,0,200,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal);
482 histos->UserHistogram("Track","TPCdEdx_P","dEdx;P [GeV];TPC signal (arb units) vs Momentum;Mom;TPCsignal", 500,0,10.,800,0,200,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal);
485 //add histograms to Pair classes
488 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
489 500,0,4,AliDielectronVarManager::kM);
491 histos->UserHistogram("Pair","InvMass_low","Inv.Mass;Inv. Mass [GeV];#pairs",
492 500,0,0.5,AliDielectronVarManager::kM);
494 histos->UserHistogram("Pair","InvMass10","Inv.Mass;Inv. Mass [GeV];#pairs",
495 500,0.,5.,AliDielectronVarManager::kM);
497 histos->UserHistogram("Pair","kDeltaEta","kDeltaEta;kDeltaEta;#pairs",
498 160,0.,1.6,AliDielectronVarManager::kDeltaEta);
500 histos->UserHistogram("Pair","kDeltaEta_low","kDeltaEta;kDeltaEta;#pairs",
501 500,0.,0.5,AliDielectronVarManager::kDeltaEta);
503 histos->UserHistogram("Pair","kDeltaPhi","kDeltaPhi;kDeltaPhi;#pairs",
504 320,0.,6.4,AliDielectronVarManager::kDeltaPhi);
506 histos->UserHistogram("Pair",
507 "kDeltaEta_kDeltaPhi","kDeltaEta_kDeltaPhi;kDeltaEta;kDeltaPhi",
508 160, 0. , 1.6, 320 , 0., 6.4 ,
509 AliDielectronVarManager::kDeltaEta , AliDielectronVarManager::kDeltaPhi );
511 histos->UserHistogram("Pair","PhiV",";PhiV;#pairs",
512 320,0.,6.4,AliDielectronVarManager::kPhivPair);
515 histos->UserHistogram("Pair","PhiV_Pt",";Pt;PhiV",
516 100,0.,10.,320,0.,6.4,AliDielectronVarManager::kPt,AliDielectronVarManager::kPhivPair);
518 histos->UserHistogram("Pair","InvMass_bin2","Inv.Mass;Inv. Mass [GeV];#pairs",
519 "0. , 0.025, 0.05 , 0.075 ,0.1 ,0.15 , 0.2 , 0.25 , 0.3 ,
520 0.4 , 0.5 , 0.6, 0.65 , 0.688 , 0.725, 0.75, 0.775, 0.8 , 0.85 ,
521 0.95, 0.975 , 1.0 , 1.025 , 1.05, 1.125 , 1.25 , 1.5 , 1.75 , 2.0 ,
522 2.25, 2.5 , 2.75 , 2.85, 2.95,3.05, 3.1 , 3.15 ,
523 3.3 , 3.5, 3.75 , 4.0",AliDielectronVarManager::kM);
526 histos->UserHistogram("Pair",
527 "InvMass_Pt","InvMass_Pt;InvMass;Pt",
528 500, 0. , 4., 100 , 0., 5. ,
529 AliDielectronVarManager::kM , AliDielectronVarManager::kPt );
531 histos->UserHistogram("Pair",
532 "InvMass_PhivPair","InvMass_PhivPair;InvMass;PhivPair",
533 500, 0. , 4., 320 , 0., 3.2 ,
534 AliDielectronVarManager::kM , AliDielectronVarManager::kPhivPair );
536 histos->UserHistogram("Pair",
537 "OpAngle","Opening angle;Opening angle;#pairs",
539 AliDielectronVarManager::kOpeningAngle);
541 histos->UserHistogram("Pair",
542 "OpAngle_InvMass","OpAngle_InvMass;Opening angle;Invariant Mass",
543 320, 0. , 3.2, 500 , 0. , 4. ,
544 AliDielectronVarManager::kOpeningAngle,AliDielectronVarManager::kM);
547 histos->UserHistogram("Pair",
548 "Phi","Phi;counts;Phi",
549 320, 0. , 6.4, AliDielectronVarManager::kPhi);
551 histos->UserHistogram("Pair",
553 120, -1.2 , 1.2, AliDielectronVarManager::kY);
555 die->SetHistogramManager(histos);
560 void InitCF(AliDielectron* die, Int_t cutDefinition)
563 // Setupd the CF Manager if needed
565 AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
568 cf->AddVariable(AliDielectronVarManager::kPt,100,0.,10.);
569 //cf->AddVariable(AliDielectronVarManager::kP,200,0,20);
570 //cf->AddVariable(AliDielectronVarManager::kPhi,64, -3.2, 3.2);
571 cf->AddVariable(AliDielectronVarManager::kY,40,-2.,2.);
572 cf->AddVariable(AliDielectronVarManager::kM,500,0.,4.);
573 //cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
574 //cf->AddVariable(AliDielectronVarManager::kOpeningAngle,315,0,3.15);
575 //cf->AddVariable(AliDielectronVarManager::kDeltaEta,200,-2,2);
576 //cf->AddVariable(AliDielectronVarManager::kDeltaPhi,100,0,3.15);
577 //cf->AddVariable(AliDielectronVarManager::kHaveSameMother,21,-10,10);
578 cf->AddVariable(AliDielectronVarManager::kNumberOfDaughters,5,0,5);
580 cf->AddVariable(AliDielectronVarManager::kPt,100,0.,10.,kTRUE);
581 //cf->AddVariable(AliDielectronVarManager::kP,200,0.,20.,kTRUE);
582 //cf->AddVariable(AliDielectronVarManager::kY,40,-2.,2.,kTRUE);
583 cf->AddVariable(AliDielectronVarManager::kEta,20,-1.,1.,kTRUE);
584 cf->AddVariable(AliDielectronVarManager::kPhi,100,0.,3.15,kTRUE);
585 // cf->AddVariable(AliDielectronVarManager::kITSsignal,1000,0.0.,1000.,kTRUE);
586 // cf->AddVariable(AliDielectronVarManager::kHaveSameMother,21,-10,10,kTRUE);
587 // cf->AddVariable(AliDielectronVarManager::kNumberOfDaughters,11,0,10,kTRUE);
589 //only in this case write MC truth info
592 cf->SetStepForMCtruth();
593 //cf->SetStepsForMCtruthOnly();
594 //cf->SetStepForNoCutsMCmotherPid();
595 cout << "MC ENABLED ------------------------------------------------------" << endl;
596 //cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);
597 //cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);
600 //cf->SetStepsForEachCut();
601 //cf->SetStepForPreFilter();
602 cf->SetStepForAfterAllCuts();
603 //cf->SetStepsForBackground();
604 cf->SetStepsForSignal();
606 die->SetCFManagerPair(cf);
610 AliDielectronSignalMC* lowMassDiele=new
611 AliDielectronSignalMC("lowMassDiele","low mass dielectron pairs");
612 lowMassDiele->SetLegPDGs(11,-11);
613 lowMassDiele->SetCheckBothChargesLegs(kTRUE,kTRUE);
614 lowMassDiele->SetLegSources(AliDielectronSignalMC::kPrimary,
615 AliDielectronSignalMC::kPrimary);
616 lowMassDiele->SetFillPureMCStep(kTRUE);
617 die->AddSignalMC(lowMassDiele);
619 AliDielectronSignalMC* secondary=new
620 AliDielectronSignalMC("secondary","secondary electrons pairs");
621 secondary->SetLegPDGs(11,-11);
622 secondary->SetCheckBothChargesLegs(kTRUE,kTRUE);
623 secondary->SetLegSources(AliDielectronSignalMC::kSecondary,
624 AliDielectronSignalMC::kSecondary);
625 die->AddSignalMC(secondary);
627 AliDielectronSignalMC* eleFromConversions=new
628 AliDielectronSignalMC("eleFromConversions","conversion electrons");
629 eleFromConversions->SetLegPDGs(11,-11);
630 eleFromConversions->SetCheckBothChargesLegs(kTRUE,kTRUE);
631 eleFromConversions->SetLegSources(AliDielectronSignalMC::kSecondary,
632 AliDielectronSignalMC::kSecondary);
633 eleFromConversions->SetMotherPDGs(22,22); // 22- photon
634 die->AddSignalMC(eleFromConversions);
636 AliDielectronSignalMC* misIdPions=new
637 AliDielectronSignalMC("misIdPions","mis id. pion pairs");
638 misIdPions->SetLegPDGs(211,-211);
639 misIdPions->SetCheckBothChargesLegs(kTRUE,kTRUE);
640 die->AddSignalMC(misIdPions);
642 AliDielectronSignalMC* dalitzDecays=new
643 AliDielectronSignalMC("dalitzDecays","dalitz Pairs");
644 dalitzDecays->SetLegPDGs(11,-11);
645 dalitzDecays->SetCheckBothChargesLegs(kTRUE,kTRUE);
646 dalitzDecays->SetLegSources(AliDielectronSignalMC::kSecondary,
647 AliDielectronSignalMC::kSecondary);
648 dalitzDecays->SetMotherPDGs(111,111);
649 dalitzDecays->SetFillPureMCStep(kTRUE);
650 die->AddSignalMC(dalitzDecays);
653 AliDielectronSignalMC* PhiDecays= new AliDielectronSignalMC("PhiDecays","Phi Pairs");
654 PhiDecays->SetLegPDGs(11,-11);
655 PhiDecays->SetCheckBothChargesLegs(kTRUE,kTRUE);
656 PhiDecays->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
657 PhiDecays->SetMotherPDGs(333,333);
658 PhiDecays->SetMothersRelation(AliDielectronSignalMC::kSame);
659 PhiDecays->SetFillPureMCStep(kTRUE);
660 die->AddSignalMC(PhiDecays);
662 AliDielectronSignalMC* OmegaDecays= new AliDielectronSignalMC("OmegaDecays","Omega Pairs");
663 OmegaDecays->SetLegPDGs(11,-11);
664 OmegaDecays->SetCheckBothChargesLegs(kTRUE,kTRUE);
665 OmegaDecays->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
666 OmegaDecays->SetMotherPDGs(223,223);
667 OmegaDecays->SetMothersRelation(AliDielectronSignalMC::kSame);
668 OmegaDecays->SetFillPureMCStep(kTRUE);
669 die->AddSignalMC(OmegaDecays);
672 AliDielectronSignalMC* RhoDecays= new AliDielectronSignalMC("RhoDecays","Rho Pairs");
673 RhoDecays->SetLegPDGs(11,-11);
674 RhoDecays->SetCheckBothChargesLegs(kTRUE,kTRUE);
675 RhoDecays->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
676 RhoDecays->SetMotherPDGs(113,113);
677 RhoDecays->SetMothersRelation(AliDielectronSignalMC::kSame);
678 RhoDecays->SetFillPureMCStep(kTRUE);
679 die->AddSignalMC(RhoDecays);
681 AliDielectronSignalMC* DieleConti= new AliDielectronSignalMC("DieleConti","low mass ee pairs");
682 DieleConti->SetLegPDGs(11,-11);
683 DieleConti->SetMotherPDGs(0,0,22,22);
684 DieleConti->SetCheckBothChargesLegs(kTRUE,kTRUE);
685 DieleConti->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState);
686 DieleConti->SetMothersRelation(AliDielectronSignalMC::kSame);
687 DieleConti->SetFillPureMCStep(kTRUE);
688 die->AddSignalMC(DieleConti);*/
693 //--------------------------------------