]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/macrosLMEE/ConfigLMEEpp2010.C
add robust defaults
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosLMEE / ConfigLMEEpp2010.C
CommitLineData
7f5f1ec3 1#include "LMEECutLib.C"
911affe5 2void InitHistograms(AliDielectron *die, Int_t cutDefinition);
3void InitCF(AliDielectron* die, Int_t cutDefinition);
4void EnableMC();
5
cb0b0223 6TString names=("noPairing;TPCandTOFnoRej;TPCorTOF");
911affe5 7TObjArray *arrNames=names.Tokenize(";");
8const Int_t nDie=arrNames->GetEntries();
9
10Bool_t MCenabled=kFALSE;
11
12
09f4a504 13AliDielectron* ConfigLMEEpp2010(Int_t cutDefinition, Bool_t hasMC=kFALSE, Bool_t enableCF=kTRUE);
911affe5 14{
15
16 Int_t selectedPID=-1;
17 Bool_t rejectionStep=kFALSE;
18 LMEECutLib* LMCL = new LMEECutLib();
19
20 //
21 // Setup the instance of AliDielectron
22 //
23
24 MCenabled=hasMC;
25
09f4a504 26 if (MCenabled)
27 die->SetHasMC(kTRUE);
911affe5 28 // create the actual framework object
29
30 TString name=Form("%02d",cutDefinition);
31 if ((cutDefinition)<arrNames->GetEntriesFast()){
32 name=arrNames->At((cutDefinition))->GetName();
33 }
34
35 //thisCut only relevant for MC:
36 AliDielectron *die =
37 new AliDielectron(Form
38 ("%s",name.Data()),
39 Form("Track cuts: %s",name.Data()));
40
41
42 //Setup AnalysisSelection:
43 if (cutDefinition==0) {
44 //not yet implemented
45 }
46 else if (cutDefinition==1) {
47 //TPCTOFCentnoRej =>
48 selectedPID = LMEECutLib::kpp2010TPCandTOF;
49 rejectionStep = kFALSE;
50 }
51 else if (cutDefinition==2) {
52 //TPCTOFCentnoRej =>
53 selectedPID = LMEECutLib::kpp2010TPCorTOF;
54 rejectionStep = kTRUE;
55 }
56 else {
57 cout << " =============================== " << endl;
58 cout << " ==== INVALID CONFIGURATION ==== " << endl;
59 cout << " =============================== " << endl;
60 }
61
62
63 //Now configure task
64
65 //Apply correct Pre-Filter Scheme, if necessary
66 die->SetPreFilterAllSigns();
67
68 if (rejectionStep) {
69 die->GetTrackFilter().AddCuts(LMCL->GetPIDCutsPre(selectedPID) );
70 die->GetPairPreFilterLegs().AddCuts(LMCL->GetPIDCutsAna(selectedPID) );
71 die->GetPairPreFilter().AddCuts(LMCL->GetPairCuts(selectedPID) );
72 }
73 else { //No Prefilter, no Pairfilter
74 die->GetTrackFilter().AddCuts( LMCL->GetPIDCutsAna(selectedPID) );
75 }
76
77
78
79
80 AliDielectronTrackRotator *rot= LMCL->GetTrackRotator(selectedPID);
81 die->SetTrackRotator(rot);
82
83 AliDielectronMixingHandler *mix=LMCL->GetMixingHandler(selectedPID);
84 die->SetMixingHandler(mix);
85
86 // histogram setup
87 // only if an AliDielectronHistos object is attached to the
88 // dielectron framework histograms will be filled
89 //
90 InitHistograms(die,cutDefinition);
91
92 // the last definition uses no cuts and only the QA histograms should be filled!
09f4a504 93 if (enableCF) InitCF(die,cutDefinition);
911affe5 94
95 return die;
96}
97
98//______________________________________________________________________________________
99
100void InitHistograms(AliDielectron *die, Int_t cutDefinition)
101{
102 //
103 // Initialise the histograms
104 //
105
106 //Setup histogram Manager
107 AliDielectronHistos *histos=
108 new AliDielectronHistos(die->GetName(),
109 die->GetTitle());
110 //Initialise histogram classes
111 histos->SetReservedWords("Track;Pair;Pre;RejTrack;RejPair");
112
113 //Event class
114// if (cutDefinition==nDie-1)
115 histos->AddClass("Event");
116
117 //Track classes
118 //to fill also track info from 2nd event loop until 2
119 for (Int_t i=0; i<2; ++i){
120 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
121 }
122
123 //Pair classes
124 // to fill also mixed event histograms loop until 10
125 for (Int_t i=0; i<3; ++i){
126 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
127 }
128
129 //ME and track rot
130 if (die->GetMixingHandler()) {
131 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3)));
132 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4)));
133 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6)));
134 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7)));
135 }
136 if (die->GetTrackRotator()) {
137 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(10)));
138 }
139
140 //PreFilter Classes
141 //to fill also track info from 2nd event loop until 2
142 for (Int_t i=0; i<2; ++i){
143 histos->AddClass(Form("Pre_%s",AliDielectron::TrackClassName(i)));
144 }
145
146
147 //Create Classes for Rejected Tracks/Pairs:
7f5f1ec3 148 for (Int_t i=0; i<2; ++i){
149 histos->AddClass(Form("RejTrack_%s",AliDielectron::TrackClassName(i)));
911affe5 150 }
151 for (Int_t i=0; i<3; ++i){
152 histos->AddClass(Form("RejPair_%s",AliDielectron::PairClassName(i)));
153 }
154
155 /*
156 //track rotation
157
158 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
159 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
160 */
161 //add histograms to event class
162 histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events",
163 1,0.,1.,AliDielectronVarManager::kNevents);
164 histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]","0,10,20,40,80,100,101",
165 AliDielectronVarManager::kCentrality);
166
167
7f5f1ec3 168 //add histograms to Track classes, also fills RejTrack
911affe5 169 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
170 histos->UserHistogram("Track","NclsSFracTPC","NclsSFracTPC; NclsSFracTPC;#tracks",200,0,10.,AliDielectronVarManager::kNclsSFracTPC);
171 histos->UserHistogram("Track","TPCclsDiff","TPCclsDiff; TPCclsDiff;#tracks",200,0,10.,AliDielectronVarManager::kTPCclsDiff);
172
173 histos->UserHistogram("Track","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
7f5f1ec3 174 400,0.0,20.,200,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
911affe5 175
176 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
177 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
7f5f1ec3 178/*
911affe5 179 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
180 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
181 histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
182 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
183 histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
184 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
185
186 histos->UserHistogram("Track","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks",
187 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE);
188 histos->UserHistogram("Track","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks",
189 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE);
190
191 histos->UserHistogram("Track","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
192 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE);
193 histos->UserHistogram("Track","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
194 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE);
7f5f1ec3 195*/
911affe5 196 histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
7f5f1ec3 197 100,-2,2,100,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
911affe5 198
199 histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
200
201 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
202
203 histos->UserHistogram("Track","TPCnCls_kNFclsTPCr","nTPC vs nTPCr;nTPC vs nTPCr;#tracks",159,0.,159.,159,0.,159.,AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
204
205 histos->UserHistogram("Track","kNFclsTPCr_pT","nTPCr vs pt;nTPCr vs pt;#tracks",159,0.,159.,200,0.,20.,AliDielectronVarManager::kNFclsTPCr,AliDielectronVarManager::kPt);
206
7f5f1ec3 207 //add histograms to Pair classes, also fills RejPair
911affe5 208 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
209 500,0.0,5.00,AliDielectronVarManager::kM);
210 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
211 100,-2.,2.,AliDielectronVarManager::kY);
212 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
213 100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
214 //2D Histo Plot
215 histos->UserHistogram("Pair","InvMassPairPt","Inv.Mass vs PairPt;Inv. Mass [GeV], pT [GeV];#pairs",
7f5f1ec3 216 500,0.0,5.0,100,0.,10.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
911affe5 217
218 histos->UserHistogram("Pair","InvMassOpeningAngle","Opening Angle vs Inv.Mass;Inv. Mass [GeV];#pairs",
219 500,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
220
7f5f1ec3 221 //add histograms to PRE-Track classes
911affe5 222 histos->UserHistogram("Pre","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
223
224 histos->UserHistogram("Pre","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
7f5f1ec3 225 400,0.0,20.,200,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
911affe5 226
227 histos->UserHistogram("Pre","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
228 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
229
7f5f1ec3 230/*
911affe5 231 histos->UserHistogram("Pre","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
232 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
233 histos->UserHistogram("Pre","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
234 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
235 histos->UserHistogram("Pre","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
236 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
237
238 histos->UserHistogram("Pre","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks",
239 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE);
240 histos->UserHistogram("Pre","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks",
241 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE);
242
243 histos->UserHistogram("Pre","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
244 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE);
245 histos->UserHistogram("Pre","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
246 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE);
7f5f1ec3 247*/
911affe5 248 histos->UserHistogram("Pre","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
7f5f1ec3 249 100,-2,2,100,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
911affe5 250
251 histos->UserHistogram("Pre","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
252
911affe5 253 histos->UserHistogram("Pre","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
254
911affe5 255 die->SetHistogramManager(histos);
256}
257
258
259void InitCF(AliDielectron* die, Int_t cutDefinition)
260{
261 //
262 // Setupd the CF Manager if needed
263 //
09f4a504 264 AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
265
266 //pair variables
267 cf->AddVariable(AliDielectronVarManager::kP,200,0,20);
268 cf->AddVariable(AliDielectronVarManager::kM,201,-0.01,4.01); //20Mev Steps
269 cf->AddVariable(AliDielectronVarManager::kY,100,-2.,2.);
270 cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
271
272 cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,10.0,30.0,40.0,60.,80.,100.");
273 cf->AddVariable(AliDielectronVarManager::kOpeningAngle,320,0.,3.2);
274 //leg variables
275 cf->AddVariable(AliDielectronVarManager::kP,200,0.,20.,kTRUE);
276 cf->AddVariable(AliDielectronVarManager::kITSsignal,1000,0.0.,1000.,kTRUE);
277 cf->AddVariable(AliDielectronVarManager::kTPCsignal,500,0.0.,500.,kTRUE);
278 cf->AddVariable(AliDielectronVarManager::kY,100,-2.,2.,kTRUE);
279 //only in this case write MC truth info
280 if (MCenabled) {
281 cf->SetStepForMCtruth();
282 cf->SetStepsForMCtruthOnly();
283 cf->AddVariable(AliDielectronVarManager::kHaveSameMother,5,-2,2);
284 cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);
285 cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);
286 }
911affe5 287
09f4a504 288 cf->SetStepsForSignal();
289 die->SetCFManagerPair(cf);
290
291
292//only in this case write MC truth info
911affe5 293 if (MCenabled) {
294 cf->SetStepForMCtruth();
295 cf->SetStepsForMCtruthOnly();
7f5f1ec3 296 cf->AddVariable(AliDielectronVarManager::kHaveSameMother,21,-10,10,kTRUE);
911affe5 297 cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);
298 cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);
299 }
300
301 cf->SetStepsForSignal();
302 die->SetCFManagerPair(cf);
303}
304
305//--------------------------------------
306void EnableMC() {
307 MCenabled=kTRUE;
308}
309