1 void InitHistograms(AliDielectron *die, Int_t cutDefinition);
2 void InitCF(AliDielectron* die, Int_t cutDefinition);
5 TString names=("noPairing;TPCTOFCentnoRej;TPCTOFSemiCentnoRej;TPCTOFPerinoRej;TPCTOFCent;TPCTOFSemiCent;TPCTOFPeri;TPCTOFCentnoRejTight;TPCTOFCentTight");
6 TObjArray *arrNames=names.Tokenize(";");
7 const Int_t nDie=arrNames->GetEntries();
9 Bool_t MCenabled=kFALSE;
12 AliDielectron* ConfigLMEEPbPb2011(Int_t cutDefinition, Bool_t hasMC=kFALSE, Bool_t CFenable=kFALSE)
16 Int_t selectedCentrality=-1;
17 Bool_t rejectionStep=kFALSE;
18 LMEECutLib* LMCL = new LMEECutLib();
21 // Setup the instance of AliDielectron
25 // create the actual framework object
27 TString name=Form("%02d",cutDefinition);
28 if ((cutDefinition)<arrNames->GetEntriesFast()){
29 name=arrNames->At((cutDefinition))->GetName();
32 //thisCut only relevant for MC:
34 new AliDielectron(Form
36 Form("Track cuts: %s",name.Data()));
43 //Setup AnalysisSelection:
44 if (cutDefinition==0) {
47 else if (cutDefinition==1) {
48 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
49 selectedCentrality = LMEECutLib::kPbPb2011Central;
50 rejectionStep = kFALSE;
52 else if (cutDefinition==2) {
53 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
54 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
55 rejectionStep = kFALSE;
57 else if (cutDefinition==3) {
58 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
59 selectedCentrality = LMEECutLib::kPbPb2011Peripheral;
60 rejectionStep = kFALSE;
62 else if (cutDefinition==4) {
63 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
64 selectedCentrality = LMEECutLib::kPbPb2011Central;
65 rejectionStep = kTRUE;
67 else if (cutDefinition==5) {
68 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
69 selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
70 rejectionStep = kTRUE;
72 else if (cutDefinition==6) {
73 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
74 selectedCentrality = LMEECutLib::kPbPb2011Peripheral;
75 rejectionStep = kTRUE;
78 //Legacy cuts, check consistence w/ 1 & 4, then remove
79 else if (cutDefinition==7) {
80 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
81 selectedCentrality = LMEECutLib::kPbPb2011Central;
82 rejectionStep = kFALSE;
84 else if (cutDefinition==8) {
85 selectedPID = LMEECutLib::kPbPb2011TPCandTOFwide;
86 selectedCentrality = LMEECutLib::kPbPb2011Central;
87 rejectionStep = kTRUE;
91 cout << " =============================== " << endl;
92 cout << " ==== INVALID CONFIGURATION ==== " << endl;
93 cout << " =============================== " << endl;
99 //Apply correct Pre-Filter Scheme, if necessary
100 die->SetPreFilterAllSigns();
103 die->GetTrackFilter().AddCuts(LMCL->GetPIDCutsPre(selectedPID) );
104 die->GetPairPreFilterLegs().AddCuts(LMCL->GetPIDCutsAna(selectedPID) );
105 die->GetPairPreFilter().AddCuts(LMCL->GetPairCuts(selectedPID) );
107 else { //No Prefilter, no Pairfilter
108 die->GetTrackFilter().AddCuts( LMCL->GetPIDCutsAna(selectedPID) );
110 //Introduce NULL-check for pp?
111 die->GetEventFilter().AddCuts(LMCL->GetCentralityCuts(selectedCentrality));
116 AliDielectronTrackRotator *rot= 0x0;
117 /*AliDielectronTrackRotator *rot= LMCL->GetTrackRotator(selectedPID);
118 die->SetTrackRotator(rot);
120 AliDielectronMixingHandler *mix=LMCL->GetMixingHandler(selectedPID);
121 die->SetMixingHandler(mix);
124 // only if an AliDielectronHistos object is attached to the
125 // dielectron framework histograms will be filled
127 InitHistograms(die,cutDefinition);
129 // the last definition uses no cuts and only the QA histograms should be filled!
131 InitCF(die,cutDefinition);
136 //______________________________________________________________________________________
138 void InitHistograms(AliDielectron *die, Int_t cutDefinition)
141 // Initialise the histograms
144 //Setup histogram Manager
145 AliDielectronHistos *histos=
146 new AliDielectronHistos(die->GetName(),
148 //Initialise histogram classes
149 histos->SetReservedWords("Track;Pair;Pre;RejTrack;RejPair");
152 // if (cutDefinition==nDie-1)
153 histos->AddClass("Event");
156 //to fill also track info from 2nd event loop until 2
157 for (Int_t i=0; i<2; ++i){
158 histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
162 // to fill also mixed event histograms loop until 10
163 for (Int_t i=0; i<3; ++i){
164 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
168 if (die->GetMixingHandler()) {
169 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3)));
170 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4)));
171 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6)));
172 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7)));
174 if (die->GetTrackRotator()) {
175 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(10)));
179 //to fill also track info from 2nd event loop until 2
180 for (Int_t i=0; i<2; ++i){
181 histos->AddClass(Form("Pre_%s",AliDielectron::TrackClassName(i)));
185 //Create Classes for Rejected Tracks/Pairs:
186 for (Int_t i=0; i<2; ++i){
187 histos->AddClass(Form("RejTrack_%s",AliDielectron::TrackClassName(i)));
189 for (Int_t i=0; i<3; ++i){
190 histos->AddClass(Form("RejPair_%s",AliDielectron::PairClassName(i)));
196 histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
197 histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
199 //add histograms to event class
200 histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events",
201 1,0.,1.,AliDielectronVarManager::kNevents);
202 histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]","0,10,20,40,80,100,101",
203 AliDielectronVarManager::kCentrality);
206 //add histograms to Track classes, also fills RejTrack
207 histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
208 histos->UserHistogram("Track","NclsSFracTPC","NclsSFracTPC; NclsSFracTPC;#tracks",200,0,10.,AliDielectronVarManager::kNclsSFracTPC);
209 histos->UserHistogram("Track","TPCclsDiff","TPCclsDiff; TPCclsDiff;#tracks",200,0,10.,AliDielectronVarManager::kTPCclsDiff);
211 histos->UserHistogram("Track","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
212 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
214 histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
215 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
217 histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
218 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
219 histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons;#tracks",
220 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,kTRUE);
221 histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
222 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
224 histos->UserHistogram("Track","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons;#tracks",
225 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,kTRUE);
226 histos->UserHistogram("Track","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions;#tracks",
227 400,0.0,20.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,kTRUE);
229 histos->UserHistogram("Track","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons;#tracks",
230 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,kTRUE);
231 histos->UserHistogram("Track","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons;#tracks",
232 400,0.0,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,kTRUE);
234 histos->UserHistogram("Track","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
235 200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
237 histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
239 histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
241 histos->UserHistogram("Track","TPCnCls_kNFclsTPCr","nTPC vs nTPCr;nTPC vs nTPCr;#tracks",159,0.,159.,159,0.,159.,AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
243 histos->UserHistogram("Track","kNFclsTPCr_pT","nTPCr vs pt;nTPCr vs pt;#tracks",159,0.,159.,200,0.,20.,AliDielectronVarManager::kNFclsTPCr,AliDielectronVarManager::kPt);
245 //add histograms to Pair classes, also fills RejPair
246 histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
247 500,0.0,5.00,AliDielectronVarManager::kM);
248 histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
249 100,-2.,2.,AliDielectronVarManager::kY);
250 histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
251 100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
253 histos->UserHistogram("Pair","InvMassPairPt","Inv.Mass vs PairPt;Inv. Mass [GeV], pT [GeV];#pairs",
254 500,0.0,5.0,500,0.,50.,AliDielectronVarManager::kM,AliDielectronVarManager::kPt);
256 histos->UserHistogram("Pair","InvMassOpeningAngle","Opening Angle vs Inv.Mass;Inv. Mass [GeV];#pairs",
257 500,0.0,5.0,200,0.,6.3,AliDielectronVarManager::kM,AliDielectronVarManager::kOpeningAngle);
259 //add histograms to Track classes
260 histos->UserHistogram("Pre","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
262 histos->UserHistogram("Pre","ITS_dEdx_P","ITS_dEdx;P [GeV];ITS signal (arb units);#tracks",
263 400,0.0,20.,1000,0.,1000.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kITSsignal,kTRUE);
265 histos->UserHistogram("Pre","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
266 400,0.0,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
268 histos->UserHistogram("Pre","Eta_Phi","Eta Phi Map; Eta; Phi;#tracks",
269 200,-2,2,200,0,3.15,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
271 histos->UserHistogram("Pre","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
273 histos->UserHistogram("Pre","ZVertex ","ZVertex ;ZVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kZv);
274 histos->UserHistogram("Pre","XVertex ","XVertex ;XVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kXv);
275 histos->UserHistogram("Pre","YVertex ","YVertex ;YVertex[cm];#tracks",20,-20,20,AliDielectronVarManager::kYv);
277 // histos->UserHistogram("Pre","TPCnCls","Number of Clusters TPC;TPC number clusteres;#tracks",159,0.,159.,AliDielectronVarManager::kNclsTPC);
280 die->SetHistogramManager(histos);
284 void InitCF(AliDielectron* die, Int_t cutDefinition)
287 // Setupd the CF Manager if needed
289 AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
292 cf->AddVariable(AliDielectronVarManager::kP,200,0,20);
293 cf->AddVariable(AliDielectronVarManager::kPt,200,0,20);
294 cf->AddVariable(AliDielectronVarManager::kM,201,-0.01,4.01); //20Mev Steps
295 cf->AddVariable(AliDielectronVarManager::kY,100,-2.,2.);
296 cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
298 cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,10.0,30.0,40.0,60.,80.,100.");
299 cf->AddVariable(AliDielectronVarManager::kOpeningAngle,320,0.,3.2);
301 cf->AddVariable(AliDielectronVarManager::kP,200,0.,20.,kTRUE);
302 cf->AddVariable(AliDielectronVarManager::kPt,200,0.,20.,kTRUE);
303 cf->AddVariable(AliDielectronVarManager::kITSsignal,1000,0.0.,1000.,kTRUE);
304 cf->AddVariable(AliDielectronVarManager::kTPCsignal,500,0.0.,500.,kTRUE);
305 cf->AddVariable(AliDielectronVarManager::kY,100,-2.,2.,kTRUE);
306 //only in this case write MC truth info
308 cf->SetStepForMCtruth();
309 cf->SetStepsForMCtruthOnly();
310 cf->AddVariable(AliDielectronVarManager::kHaveSameMother,5,-2,2);
311 cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);
312 cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);
315 cf->SetStepsForSignal();
316 die->SetCFManagerPair(cf);
319 AliDielectronSignalMC* lowMassDiele=new
320 AliDielectronSignalMC("lowMassDiele","low mass dielectron pairs");
321 lowMassDiele->SetLegPDGs(11,-11);
322 lowMassDiele->SetCheckBothChargesLegs(kTRUE,kTRUE);
323 lowMassDiele->SetLegSources(AliDielectronSignalMC::kPrimary,
324 AliDielectronSignalMC::kPrimary);
325 lowMassDiele->SetFillPureMCStep(kTRUE);
326 die->AddSignalMC(lowMassDiele);
328 AliDielectronSignalMC* secondary=new
329 AliDielectronSignalMC("secondary","secondary electrons pairs");
330 secondary->SetLegPDGs(11,-11);
331 secondary->SetCheckBothChargesLegs(kTRUE,kTRUE);
332 secondary->SetLegSources(AliDielectronSignalMC::kSecondary,
333 AliDielectronSignalMC::kSecondary);
334 die->AddSignalMC(secondary);
337 AliDielectronSignalMC* finalState=new
338 AliDielectronSignalMC("finalState","finalState electrons pairs");
339 finalState->SetLegPDGs(11,-11);
340 finalState->SetCheckBothChargesLegs(kTRUE,kTRUE);
341 finalState->SetLegSources(AliDielectronSignalMC::kFinalState,
342 AliDielectronSignalMC::kFinalState);
343 die->AddSignalMC(finalState);
348 //--------------------------------------