2 void InitHistograms(AliDielectron *die, Int_t cutDefinition);
3 void InitCF(AliDielectron* die, Int_t cutDefinition);
5 void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition);
6 void SetupPairCuts(AliDielectron *die, Int_t cutDefinition);
8 TString names=("trackQ+Pt>1GeV+loose_PID;trackQ+Pt>1GeV+tight_PID;trackQ+Pt>.5GeV");
9 TObjArray *arrNames=names.Tokenize(";");
11 const Int_t nDie=arrNames->GetEntries();
13 AliDielectron* ConfigJpsi2ee(Int_t cutDefinition)
16 // Setup the instance of AliDielectron
19 // create the actual framework object
20 TString name=Form("%02d",cutDefinition);
21 if (cutDefinition<arrNames->GetEntriesFast()){
22 name=arrNames->At(cutDefinition)->GetName();
25 new AliDielectron(Form("%s",name.Data()),
26 Form("Track cuts: %s",name.Data()));
29 SetupTrackCuts(die,cutDefinition);
30 SetupPairCuts(die,cutDefinition);
34 // only if an AliDielectronHistos object is attached to the
35 // dielectron framework the QA histograms will be filled
37 InitHistograms(die,cutDefinition);
39 // the last definition uses no cuts and only the QA histograms should be filled!
40 if (cutDefinition<nDie-1) InitCF(die,cutDefinition);
45 //______________________________________________________________________________________
46 void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition)
49 // Setup the track cuts
53 die->GetTrackFilter().AddCuts(SetupESDtrackCuts(cutDefinition));
57 if (cutDefinition==nDie-1) {
59 AliDielectronVarCuts *pt = new AliDielectronVarCuts("Pt>.5","Pt>.5");
60 pt->AddCut(AliDielectronVarManager::kPt,.5,1e30);
61 die->GetTrackFilter().AddCuts(pt);
67 AliDielectronVarCuts *pt = new AliDielectronVarCuts("Pt>1","Pt>1");
68 pt->AddCut(AliDielectronVarManager::kPt,1.,1e30);
69 pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.);
70 pt->AddCut(AliDielectronVarManager::kImpactParXY,-.07,.07);
71 die->GetTrackFilter().AddCuts(pt);
74 if (cutDefinition==0){
75 //ESD pid cuts (TPC nSigma Electrons)
76 AliDielectronVarCuts *pid = new AliDielectronVarCuts("TPCpid","TPC nSigma cut |e|<3 pi>2 |P|>2 |K|>2");
78 pid->AddCut(AliDielectronVarManager::kTPCnSigmaEle, -3., 3.);
80 pid->AddCut(AliDielectronVarManager::kTPCnSigmaPio, -20., 2., kTRUE);
81 pid->AddCut(AliDielectronVarManager::kTPCnSigmaPro, -2., 2., kTRUE);
82 pid->AddCut(AliDielectronVarManager::kTPCnSigmaKao, -2., 2., kTRUE);
83 die->GetTrackFilter().AddCuts(pid);
87 if (cutDefinition==1){
88 //ESD pid cuts (TPC nSigma Electrons)
89 AliDielectronVarCuts *pid = new AliDielectronVarCuts("TPCpid","TPC nSigma cut |e|<2 pi>2 |P|>2 |K|>2; |dXY|<200um");
91 pid->AddCut(AliDielectronVarManager::kTPCnSigmaEle, -2., 2.);
93 pid->AddCut(AliDielectronVarManager::kTPCnSigmaPio, -2., 2., kTRUE);
94 pid->AddCut(AliDielectronVarManager::kTPCnSigmaPro, -2., 2., kTRUE);
95 pid->AddCut(AliDielectronVarManager::kTPCnSigmaKao, -2., 2., kTRUE);
96 //tighten Impact parameter to 200um
97 pid->AddCut(AliDielectronVarManager::kImpactParXY, -0.02, 0.02);
98 die->GetTrackFilter().AddCuts(pid);
103 //______________________________________________________________________________________
104 void SetupPairCuts(AliDielectron *die, Int_t cutDefinition)
107 // Setup the pair cuts
111 // reject conversions
112 // and select mass region
113 AliDielectronVarCuts *openingAngleCut=new AliDielectronVarCuts("OpeningAngle","Opening angle > 35mrad");
114 openingAngleCut->AddCut(AliDielectronVarManager::kOpeningAngle,.035,4.);
115 openingAngleCut->AddCut(AliDielectronVarManager::kM,2.,4.);
116 die->GetPairFilter().AddCuts(openingAngleCut);
119 //______________________________________________________________________________________
120 void InitHistograms(AliDielectron *die, Int_t cutDefinition)
123 // Initialise the QA histograms
126 //Setup QA histograms
127 AliDielectronHistos *histos=
128 new AliDielectronHistos(die->GetName(),
131 //Initialise histogram classes
132 histos->SetReservedWords("Track;Pair");
134 //Event class (only for last QA)
135 if (cutDefinition==nDie-1) histos->AddClass("Event");
137 //Track classes, only first event
138 for (Int_t i=0; i<2; ++i){
139 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
142 //Pair classes, only first event
143 for (Int_t i=0; i<3; ++i){
144 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
148 if (cutDefinition==nDie-1){
149 //add histograms to event class
150 histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events",
151 1,0.,1.,AliDielectronVarManager::kNevents);
154 //add histograms to Track classes
155 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
156 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
157 400,0.2,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
158 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
159 400,0.2,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
160 histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
161 400,0.2,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
162 histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
164 //add histograms to Pair classes
165 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
166 500,0.,4.,AliDielectronVarManager::kM);
167 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
168 100,-2.,2.,AliDielectronVarManager::kY);
169 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
170 100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
171 histos->UserHistogram("Pair","Chi2/NDF","#Chi^{2}/NDF;#Chi^{2}/NDF",
172 100, 0., 20., AliDielectronVarManager::kChi2NDF);
174 die->SetHistogramManager(histos);
178 void InitCF(AliDielectron* die, Int_t cutDefinition)
181 // Setupd the CF Manager if needed
183 AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
186 cf->AddVariable(AliDielectronVarManager::kPt,20,0,10);
187 cf->AddVariable(AliDielectronVarManager::kY,40,-2,2);
188 cf->AddVariable(AliDielectronVarManager::kM,200,-0.01,3.99);
189 cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
191 cf->AddVariable(AliDielectronVarManager::kPt,20,0,10,kTRUE);
193 //only in this case write MC truth info
194 cf->SetStepsForCutsIncreasing();
195 if (cutDefinition==0){
196 cf->SetStepForMCtruth();
199 die->SetCFManagerPair(cf);