]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/macrosLMEE/Config_reichelt_LMEEPbPb2011.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosLMEE / Config_reichelt_LMEEPbPb2011.C
1 //#include "AliDielectron.h"
2 //#include "PWGDQ/dielectron/macrosLMEE/LMEECutLib.C"
3
4 void InitHistograms(AliDielectron *die, Int_t cutDefinition);
5 void InitCF(AliDielectron* die, Int_t cutDefinition);
6 //adjust for 1,4,8
7 TString names=("ITSTPCTOFif_trkSPDfirst_1_kSemi;ITSTPCTOFif_trkSPDfirst5cls_4_kSemi;ITS2gevTPCTOFif_trkSPDfirst_5_tight_kSemi");
8 TObjArray *arrNames=names.Tokenize(";");
9 const Int_t nDie=arrNames->GetEntries();
10 Bool_t MCenabled=kFALSE;//needed for LMEEcutlib
11
12 AliDielectron* Config_reichelt_LMEEPbPb2011(Int_t cutDefinition, Bool_t hasMC=kFALSE, Bool_t isESD=kFALSE)
13 {
14   //
15   // Setup the instance of AliDielectron
16   //
17   
18   Int_t selectedPID=-1;
19   Int_t selectedCentrality=-1;
20   Bool_t rejectionStep=kFALSE;
21   //Bool_t doPairing=kTRUE;
22   LMEECutLib*  LMcutlib = new LMEECutLib();
23   
24   // task name
25   TString name=Form("%02d",cutDefinition);
26   if (cutDefinition<arrNames->GetEntriesFast())  name=arrNames->At(cutDefinition)->GetName();
27   
28   // init AliDielectron
29   AliDielectron *die = new AliDielectron(Form("%s",name.Data()), Form("AliDielectron with cuts: %s",name.Data()));
30   //die->SetHasMC(hasMC);
31   MCenabled=hasMC;
32   
33   cout << "cutDefinition = " << cutDefinition << endl;
34   // Setup Analysis Selection
35   if (cutDefinition==0) {           // Config for Technical Preliminaries for QM2014 (no prefilter used!)
36     selectedPID = LMEECutLib::kPbPb2011_pidITSTPCTOFif_trkSPDfirst_1;
37     selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
38   }
39   else if (cutDefinition==1) {      // Config for systematic checks 1
40     selectedPID = LMEECutLib::kPbPb2011_pidITSTPCTOFif_trkSPDfirst5cls_4;
41     selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
42   }
43   else if (cutDefinition==2) {      // Config for systematic checks 2
44     selectedPID = LMEECutLib::kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst_5_tight;
45     selectedCentrality = LMEECutLib::kPbPb2011SemiCentral;
46   }
47   else {
48     cout << " =============================== " << endl;
49     cout << " ==== INVALID CONFIGURATION ==== " << endl;
50     cout << " cutDefinition = " << cutDefinition << endl;
51     cout << " =============================== " << endl;
52   }
53   // __________________________________________________
54   // POSSIBLE FURTHER SETTINGS
55   // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
56   // deactivate pairing to check track cuts or run with loose pid cuts:
57   //die->SetNoPairing();
58   // apply correct Pre-Filter Scheme, if necessary
59   //die->SetPreFilterAllSigns();
60   //die->SetPreFilterUnlikeOnly();
61   // --------------------------------------------------
62   
63   //
64   // Now configure task
65   //
66   // add centrality selection to event cuts
67   die->GetEventFilter().AddCuts( LMcutlib->GetCentralityCuts(selectedCentrality) );
68   // switch off KF Particle
69   die->SetUseKF(kFALSE);
70   
71   // --------------------------------------------------
72   // with Rejection Step (Prefilter)
73   // --------------------------------------------------
74   if (rejectionStep) 
75   {
76     if (isESD) {
77       die->GetTrackFilter().AddCuts( LMcutlib->GetESDTrackCutsAna(selectedPID) );
78       die->GetPairPreFilterLegs().AddCuts( LMcutlib->GetESDTrackCutsAna(selectedPID) ); // this is redundant!?
79     }
80     // set initial track filter.
81     // the function 'GetPIDCutsPre()' must also call 'GetTrackCutsPre()'!
82           die->GetTrackFilter().AddCuts( LMcutlib->GetPIDCutsPre(selectedPID) );
83     // set Prefilter. "remove all tracks from the Single track arrays that pass the cuts in this filter" (comment in AliDielectron.cxx)
84     // cuts = REJECTION!!!
85     die->GetPairPreFilter().AddCuts( LMcutlib->GetPairCutsPre(selectedPID) ); 
86     // "apply leg cuts after the pre filter" (comment in AliDielectron.cxx)
87     
88     
89     // the function 'GetPIDCutsAna()' must also call 'GetTrackCutsAna()'!
90           die->GetPairPreFilterLegs().AddCuts( LMcutlib->GetPIDCutsAna(selectedPID) );
91     
92     
93     // set Pairfilter.
94     // cuts = SELECTION!!!
95           die->GetPairFilter().AddCuts( LMcutlib->GetPairCutsAna(selectedPID,kFALSE) );
96     
97         }
98   // --------------------------------------------------
99   // without Rejection Step
100   // --------------------------------------------------
101         else 
102   {
103           if (isESD) {
104       die->GetTrackFilter().AddCuts( LMcutlib->GetESDTrackCutsAna(selectedPID) );
105           }
106     // the function 'GetPIDCutsAna()' must also call 'GetTrackCutsAna()'!
107           die->GetTrackFilter().AddCuts( LMcutlib->GetPIDCutsAna(selectedPID) );
108           die->GetPairFilter().AddCuts( LMcutlib->GetPairCutsAna(selectedPID,kFALSE) );
109         }
110   // --------------------------------------------------
111   
112   
113   AliDielectronTrackRotator *rot= 0x0;
114   //To save time and as it is not 100% test, rotation switched off
115   /*AliDielectronTrackRotator *rot= LMcutlib->GetTrackRotator(selectedPID);
116    die->SetTrackRotator(rot);
117    */
118   AliDielectronMixingHandler *mix=LMcutlib->GetMixingHandler(selectedPID);
119   die->SetMixingHandler(mix);
120   
121   // histogram setup
122   // only if an AliDielectronHistos object is attached to the
123   // dielectron framework histograms will be filled
124   //
125   InitHistograms(die,cutDefinition);
126   
127   // the last definition uses no cuts and only the QA histograms should be filled!
128   //  InitCF(die,cutDefinition);
129   
130   return die;
131 }
132
133 //______________________________________________________________________________________
134
135 void InitHistograms(AliDielectron *die, Int_t cutDefinition)
136 {
137   //
138   // Initialise the histograms
139   //
140   
141   //Setup histogram Manager
142   AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle());
143   
144   //Initialise histogram classes
145   histos->SetReservedWords("Track;Pair;Track_Legs;Pre;RejPair;RejTrack");
146   
147   //Event class
148   histos->AddClass("Event"); // all classes will be stored in 'THashList fHistoList'
149   
150   //Track classes
151   //to fill also track info from 2nd event loop until 3
152   // in AliDielectron.cxx: fgkTrackClassNames[4] = {"ev1+","ev1-","ev2+","ev2-"};
153   for (Int_t i=0; i<2; ++i){
154     histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
155   }
156   
157   //Pair classes
158   // to fill also mixed event histograms loop until 10
159   // fgkPairClassNames[11] = {
160   //  "ev1+_ev1+",  "ev1+_ev1-",  "ev1-_ev1-",  // 0-2 (same event)
161   //  "ev1+_ev2+",  "ev1-_ev2+",  "ev2+_ev2+",  // 3-4 (+5)
162   //  "ev1+_ev2-",  "ev1-_ev2-",                // 6-7
163   //  "ev2+_ev2-",  "ev2-_ev2-",  "ev1+_ev1-_TR"
164   // };
165   for (Int_t i=0; i<3; ++i){
166     histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
167     // Legs of final Pairs. Both charges together. No duplicate entries.
168     histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(i))); // not TrackClassName, see 'AliDielectron::FillHistograms(...)'
169   }
170   
171   //ME and track rot
172   if (die->GetMixingHandler()) {
173     histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(3)));
174     histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(4)));
175     histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(6)));
176     histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(7)));
177   }
178   if (die->GetTrackRotator()) {
179     histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(10)));
180   }
181   
182   //PreFilter Classes
183   //to fill also track info from 2nd event loop until 2
184   for (Int_t i=0; i<2; ++i){
185     histos->AddClass(Form("Pre_%s",AliDielectron::TrackClassName(i)));
186   }
187   
188   //Create Classes for Rejected Tracks/Pairs:
189   for (Int_t i=0; i<3; ++i){
190     histos->AddClass(Form("RejPair_%s",AliDielectron::PairClassName(i)));
191     // Legs of rejected Pairs. Both charges together. One track can and will make multiple entries.
192     histos->AddClass(Form("RejTrack_%s",AliDielectron::PairClassName(i))); // not TrackClassName, see 'AliDielectron::FillHistogramsPair(...)'
193   }
194   
195   /*
196    //track rotation
197    
198    histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
199    histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PMRot)));
200    */
201         //add histograms to event class
202         histos->UserHistogram("Event","nEvents","Number of processed events after cuts;#events",1,0.,1.,AliDielectronVarManager::kNevents);
203         histos->UserHistogram("Event","Centrality","Centrality;Centrality [%]","-1,0,10,20,30,40,50,60,70,80,90,100,101;#events",AliDielectronVarManager::kCentrality);
204   histos->UserHistogram("Event","centrality","N events vs centrality;centrality [%];#events",100,0,100,AliDielectronVarManager::kCentrality);
205   histos->UserHistogram("Event","nESDTracks","ESD tracks;ESD tracks;#events",1000,0,10000,AliDielectronVarManager::kNTrk);
206   histos->UserHistogram("Event","Nacc","Number of accepted tracks;Nacc;#events",1200,0,1200,AliDielectronVarManager::kNacc);
207   histos->UserHistogram("Event","epTPC","TPC event plane angle (uncorr);EP angle TPC (uc);#events",320,-3.2,3.2,AliDielectronVarManager::kTPCrpH2uc);
208   histos->UserHistogram("Event","epV0AC","V0AC event plane angle;EP angle V0AC;#events",320,-3.2,3.2,AliDielectronVarManager::kv0ACrpH2);
209   histos->UserHistogram("Event","epV0AC_epTPC","event plane angle V0AC vs TPC;EP angle TPC (uc);EP angle V0AC",
210                         160,-1.6,1.6,160,-1.6,1.6,AliDielectronVarManager::kTPCrpH2uc,AliDielectronVarManager::kv0ACrpH2);
211   
212   
213   //add histograms to Track classes
214   histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPt);
215   histos->UserHistogram("Track","Px","Px;Px [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPx);
216   histos->UserHistogram("Track","Py","Py;Py [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPy);
217   histos->UserHistogram("Track","Pz","Pz;Pz [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPz);
218   histos->UserHistogram("Track","P_PIn","TPC inner P vs P; P [GeV]; TPC inner P [GeV]",
219                         160,0.,8.,160,0.,8.,AliDielectronVarManager::kP,AliDielectronVarManager::kPIn);
220   
221   // ITS
222   Bool_t makeLogx = kFALSE;
223   histos->UserHistogram("Track","ITS_dEdx_P","ITS dEdx;P [GeV];ITS signal (arb units)",
224                         160,0.,8.,700,0.,700.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSsignal,makeLogx);
225   histos->UserHistogram("Track","ITSnSigmaEle_P","ITS number of sigmas Electrons;P [GeV];ITS number of sigmas Electrons",
226                         160,0.,8.,100,-5.,5.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaEle,makeLogx);
227   histos->UserHistogram("Track","ITSnSigmaPio_P","ITS number of sigmas Pions;P [GeV];ITS number of sigmas Pions",
228                         160,0.,8.,200,-10.,10.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaPio,makeLogx);
229 histos->UserHistogram("Track","ITSnSigmaKao_P","ITS number of sigmas Kaons;P [GeV];ITS number of sigmas Kaons",
230                       160,0.,8.,200,-10.,10.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaKao,makeLogx);
231 //histos->UserHistogram("Track","ITSnSigmaPro_P","ITS number of sigmas Protons;P [GeV];ITS number of sigmas Protons",
232 //                      160,0.,8.,200,-10.,10.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaPro,makeLogx);
233   // TPC
234   histos->UserHistogram("Track","TPC_dEdx_P","TPC dEdx;P [GeV];TPC signal (arb units)",
235                         160,0.,8.,120,0.,120.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,makeLogx);
236   histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons",
237                         160,0.,8.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,makeLogx);
238   histos->UserHistogram("Track","TPCnSigmaEle_P_dEdx","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;TPC signal (arb units)",
239                         80,0.,4.,80,-4.,4.,50,50.,100.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,AliDielectronVarManager::kTPCsignal,makeLogx);
240   histos->UserHistogram("Track","TPC_dEdx_P_run","TPC dEdx;P [GeV];TPC signal (arb units);run number",
241                         AliDielectronHelper::MakeLinBinning(80,0.,4.), 
242                         AliDielectronHelper::MakeLinBinning(50,50.,100.), 
243                         AliDielectronHelper::MakeArbitraryBinning("167900, 167987, 167988, 168310, 168311, 168322, 168325, 168341, 168342, 168361, 168362, 168458, 168460, 168464, 168467, 168511, 168512, 168514, 168777, 168826, 168988, 168992, 169035, 169040, 169044, 169045, 169091, 169094, 169099, 169138, 169144, 169145, 169148, 169156, 169160, 169167, 169238, 169411, 169415, 169417, 169418, 169419, 169420, 169475, 169498, 169504, 169506, 169512, 169515, 169550, 169553, 169554, 169555, 169557, 169586, 169587, 169588, 169590, 169591, 169835, 169837, 169838, 169846, 169855, 169858, 169859, 170027, 170040, 170081, 170083, 170084, 170085, 170088, 170089, 170091, 170155, 170159, 170163, 170193, 170203, 170204, 170207, 170228, 170230, 170268, 170269, 170270, 170306, 170308, 170309, 170311, 170312, 170313, 170315, 170387, 170388, 170572, 170593, 170600"), 
244                         AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,AliDielectronVarManager::kRunNumber);
245   //                        AliDielectronHelper::MakeArbitraryBinning("170593, 170572, 170388, 170387, 170315, 170313, 170312, 170311, 170309, 170308, 170306, 170270, 170269, 170268, 170230, 170228, 170207, 170204, 170203, 170193, 170163, 170159, 170155, 170091, 170089, 170088, 170085, 170084, 170083, 170081, 170040, 170027, 169859, 169858, 169855, 169846, 169838, 169837, 169835, 169591, 169590, 169588, 169587, 169586, 169557, 169555, 169554, 169553, 169550, 169515, 169512, 169506, 169504, 169498, 169475, 169420, 169419, 169418, 169417, 169415, 169411, 169238, 169167, 169160, 169156, 169148, 169145, 169144, 169138, 169099, 169094, 169091, 169045, 169044, 169040, 169035, 168992, 168988, 168826, 168777, 168514, 168512, 168511, 168467, 168464, 168460, 168458, 168362, 168361, 168342, 168341, 168325, 168322, 168311, 168310, 167988, 167987, 167800"), 
246   
247   histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions",
248                         160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,makeLogx);
249   histos->UserHistogram("Track","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons",
250                         160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,makeLogx);
251   histos->UserHistogram("Track","TPCnSigmaPro_P","TPC number of sigmas Protons;P [GeV];TPC number of sigmas Protons",
252                         160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPro,makeLogx);
253   // TRD
254   // TRD variables need lot of computing time. since a performance update by Julian, they will not be computed if not needed! (status 7.3.14)
255   //  histos->UserHistogram("Track","TRDpidPobEle_P","TRD PID probability Electrons;P [GeV];TRD prob Electrons",
256   //                        160,0.,8.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobEle,makeLogx);
257   //  histos->UserHistogram("Track","TRDpidPobPio_P","TRD PID probability Pions;P [GeV];TRD prob Pions",
258   //                        160,0.,8.,100,0.,1.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTRDprobPio,makeLogx);
259   // TOF
260   histos->UserHistogram("Track","TOFnSigmaEle_P","TOF number of sigmas Electrons;P [GeV];TOF number of sigmas Electrons",
261                         160,0.,8.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaEle,makeLogx);
262   histos->UserHistogram("Track","TOFnSigmaPio_P","TOF number of sigmas Pions;P [GeV];TOF number of sigmas Pions",
263                         160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPio,makeLogx);
264   histos->UserHistogram("Track","TOFnSigmaKao_P","TOF number of sigmas Kaons;P [GeV];TOF number of sigmas Kaons",
265                         160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaKao,makeLogx);
266   histos->UserHistogram("Track","TOFnSigmaPro_P","TOF number of sigmas Protons;P [GeV];TOF number of sigmas Protons",
267                         160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFnSigmaPro,makeLogx);
268   histos->UserHistogram("Track","TOFbeta","TOF beta;P [GeV];TOF beta",
269                         160,0.,8.,120,0.,1.2,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTOFbeta,makeLogx);
270   // 2D-PID
271   histos->UserHistogram("Track","PIn_TPCnSigmaEle_ITSnSigmaEle","2D PID - TPC vs ITS;P [GeV];TPC number of sigmas Electrons;ITS number of sigmas Electrons",
272                         50,0.,2.5, 160,-12.,20., 150,-10.,20.,
273                         AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,AliDielectronVarManager::kITSnSigmaEle,makeLogx);
274   histos->UserHistogram("Track","PIn_TPCnSigmaEle_TOFnSigmaEle","2D PID - TPC vs TOF;P [GeV];TPC number of sigmas Electrons;TOF number of sigmas Electrons",
275                         50,0.,2.5, 160,-12.,20., 50,-5.,5.,
276                         AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,AliDielectronVarManager::kTOFnSigmaEle,makeLogx);
277   
278   // Eta and Phi
279   histos->UserHistogram("Track","Eta","Eta;Eta;#tracks",
280                         200,-2,2,AliDielectronVarManager::kEta);
281   histos->UserHistogram("Track","Phi","Phi;Phi;#tracks",
282                         320,0.,6.4,AliDielectronVarManager::kPhi);
283   histos->UserHistogram("Track","Eta_Phi","Eta Phi Map;Eta;Phi",
284                         100,-1,1,320,0,6.4,AliDielectronVarManager::kEta,AliDielectronVarManager::kPhi);
285                         
286   histos->UserHistogram("Track","TPC_dEdx_Eta","TPC dEdx;Eta;TPC signal (arb units)",
287                         100,-1,1,120,0.,120.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCsignal);
288   histos->UserHistogram("Track","TPC_dEdx_Eta_P","TPC dEdx;Eta;TPC signal (arb units); TPC inner P [GeV]",
289                         100,-1,1,60,0.,120.,80,0.,4.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCsignal,AliDielectronVarManager::kPIn);
290   histos->UserHistogram("Track","TPCnSigmaEle_Eta","TPC number of sigmas Electrons; Eta; TPC number of sigmas Electrons",
291                         100,-1,1,100,-5.,5.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEle);
292   histos->UserHistogram("Track","TPCnSigmaEle_Eta_P","TPC number of sigmas Electrons; Eta; TPC number of sigmas Electrons; TPC inner P [GeV]",
293                         100,-1,1,80,-4.,4.,80,0.,4.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaEle,AliDielectronVarManager::kPIn);
294   histos->UserHistogram("Track","TPCnSigmaKao_Eta","TPC number of sigmas Kaons; Eta; TPC number of sigmas Kaons",
295                         100,-1,1,200,-10.,10.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaKao);
296   histos->UserHistogram("Track","TPCnSigmaKao_Eta_P","TPC number of sigmas Kaons; Eta; TPC number of sigmas Kaons; TPC inner P [GeV]",
297                         50,-1,1,100,-10.,10.,80,0.,4.,AliDielectronVarManager::kEta,AliDielectronVarManager::kTPCnSigmaKao,AliDielectronVarManager::kPIn);
298   
299   // DCA
300   histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",
301                         200,-2.,2.,AliDielectronVarManager::kImpactParXY);
302   histos->UserHistogram("Track","dZ","dZ;dZ [cm];#tracks",
303                         400,-4.,4.,AliDielectronVarManager::kImpactParZ);
304   histos->UserHistogram("Track","dXY_dZ","dXY dZ Map;dXY;dZ",
305                         100,-1.,1.,300,-3.,3.,AliDielectronVarManager::kImpactParXY,AliDielectronVarManager::kImpactParZ);
306   
307   // Quality
308   histos->UserHistogram("Track","TPCcrossedRowsOverFindable","Number of Crossed Rows TPC over Findable;TPC crossed rows over findable;#tracks",120,0.,1.2,AliDielectronVarManager::kNFclsTPCfCross);
309   histos->UserHistogram("Track","TPCcrossedRows","Number of Crossed Rows TPC;TPC crossed rows;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNFclsTPCr);
310   histos->UserHistogram("Track","TPCnCls","Number of Clusters TPC;TPC number clusters;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsTPC);
311   histos->UserHistogram("Track","ITSnCls","Number of Clusters ITS;ITS number clusters;#tracks",160,-0.5,159.5,AliDielectronVarManager::kNclsITS);
312   histos->UserHistogram("Track","TPCchi2","TPC Chi2 value;TPC chi2/Cl;#tracks",100,0.,10.,AliDielectronVarManager::kTPCchi2Cl);
313   histos->UserHistogram("Track","ITSchi2","ITS Chi2 value;ITS chi2/Cl;#tracks",100,0.,10.,AliDielectronVarManager::kITSchi2Cl);
314   histos->UserHistogram("Track","NclsSFracTPC","Fraction of shared clusters assigned in the TPC;TPC fraction of shared clusters;#tracks",200,0,10.,AliDielectronVarManager::kNclsSFracTPC);
315   histos->UserHistogram("Track","TPCclsDiff","TPC cluster difference;TPC cluster difference;#tracks",200,0,20.,AliDielectronVarManager::kTPCclsDiff);
316   histos->UserHistogram("Track","TPCsignalN","Number of PID Clusters TPC;TPC number PID clusters;#tracks",160,-0.5,159.5,AliDielectronVarManager::kTPCsignalN);
317   
318   histos->UserHistogram("Track","TPCcrossedRows_TPCnCls","TPC crossed rows vs TPC number clusters;TPC number clusters;TPC crossed rows",
319                         160,-0.5,159.5,160,-0.5,159.5,AliDielectronVarManager::kNclsTPC,AliDielectronVarManager::kNFclsTPCr);
320   histos->UserHistogram("Track","TPCcrossedRows_Pt","TPC crossed rows vs Pt;Pt [GeV];TPC crossed rows",
321                         160,0.,8.,160,-0.5,159.5,AliDielectronVarManager::kPt,AliDielectronVarManager::kNFclsTPCr);
322   histos->UserHistogram("Track","TPCcrossedRowsOverFindable_Pt","Number of Crossed Rows TPC over Findable vs Pt;Pt [GeV];TPC crossed rows over findable",
323                         160,0.,8.,120,0.,1.2,AliDielectronVarManager::kPt,AliDielectronVarManager::kNFclsTPCfCross);
324   histos->UserHistogram("Track","TPCcrossedRowsOverFindable_Eta","Number of Crossed Rows TPC over Findable vs Eta;Eta;TPC crossed rows over findable",
325                         100,-1,1,120,0.,1.2,AliDielectronVarManager::kEta,AliDielectronVarManager::kNFclsTPCfCross);
326   histos->UserHistogram("Track","TPCcrossedRowsOverFindable_Phi","Number of Crossed Rows TPC over Findable vs Phi;Phi;TPC crossed rows over findable",
327                         320,0.,6.4,120,0.,1.2,AliDielectronVarManager::kPhi,AliDielectronVarManager::kNFclsTPCfCross);
328   
329   //add histograms to Pair classes
330   histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
331                         500,0.,5.,AliDielectronVarManager::kM);
332   histos->UserHistogram("Pair","PairPt","PairPt;Pair Pt [GeV];#pairs",
333                         160,0.,8.,AliDielectronVarManager::kPt);
334   histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
335                         200,-2.,2.,AliDielectronVarManager::kY);
336   histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle;#pairs",
337                         320,0.,3.2,AliDielectronVarManager::kOpeningAngle);
338   
339   //2D and 3D histograms
340   histos->UserHistogram("Pair","InvMass_PairPt","PairPt vs InvMass;Inv. Mass [GeV];Pair Pt [GeV];#pairs",
341                         500,0.,5., 160,0.,8.,
342                         AliDielectronVarManager::kM, AliDielectronVarManager::kPt);
343   histos->UserHistogram("Pair","Eta_Phi_Pair","Phi vs Eta (pair);Eta;Phi;#pairs",
344                         100,-1.,1., 320,0.,6.4,
345                         AliDielectronVarManager::kEta, AliDielectronVarManager::kPhi);
346   histos->UserHistogram("Pair","InvMass_PairPt_PhivPair","InvMass:PairPt:PhivPair;Inv. Mass [GeV];Pair Pt [GeV];PhiV",
347                         150,0.,1.5, 40,0.,4., 64,0.,3.2,
348                         AliDielectronVarManager::kM, AliDielectronVarManager::kPt, AliDielectronVarManager::kPhivPair);
349   histos->UserHistogram("Pair","InvMass_PairPt_OpeningAngle","InvMass:PairPt:OpeningAngle;Inv. Mass [GeV];Pair Pt [GeV];Opening Angle",
350                         150,0.,1.5, 40,0.,4., 64,0.,3.2,
351                         AliDielectronVarManager::kM, AliDielectronVarManager::kPt, AliDielectronVarManager::kOpeningAngle);
352   histos->UserHistogram("Pair","InvMass_PhivPair_OpeningAngle","InvMass:PhivPair:OpeningAngle;Inv. Mass [GeV];PhiV;Opening Angle",
353                         50,0.,0.5, 160,0.,3.2, 40,0.,0.8,
354                         AliDielectronVarManager::kM, AliDielectronVarManager::kPhivPair, AliDielectronVarManager::kOpeningAngle);
355   
356   //opening angle and PhiV
357   histos->UserHistogram("Pair","InvMass_OpeningAngle","Opening Angle vs InvMass;Inv. Mass [GeV];Opening Angle;#pairs",
358                         500,0.,5., 160,0.,3.2,
359                         AliDielectronVarManager::kM, AliDielectronVarManager::kOpeningAngle);
360   histos->UserHistogram("Pair","InvMass_PhivPair","PhiV vs InvMass;Inv. Mass [GeV];PhiV;#pairs",
361                         500,0.,5., 160,0.,3.2,
362                         AliDielectronVarManager::kM, AliDielectronVarManager::kPhivPair);
363   histos->UserHistogram("Pair","PairPt_OpeningAngle","Opening Angle vs PairPt;Pair Pt [GeV];Opening Angle;#pairs",
364                         160,0.,8., 160,0.,3.2,
365                         AliDielectronVarManager::kPt, AliDielectronVarManager::kOpeningAngle);
366   histos->UserHistogram("Pair","PairPt_PhivPair","PhiV vs PairPt;Pair Pt [GeV];PhiV;#pairs",
367                         160,0.,8., 160,0.,3.2,
368                         AliDielectronVarManager::kPt, AliDielectronVarManager::kPhivPair);
369   histos->UserHistogram("Pair","OpeningAngle_PhivPair","PhiV vs OpeningAngle;Opening Angle;PhiV;#pairs",
370                         160,0.,3.2, 160,0.,3.2,
371                         AliDielectronVarManager::kOpeningAngle, AliDielectronVarManager::kPhivPair);
372   
373   //centrality
374   histos->UserHistogram("Pair","InvMass_Centrality","Centrality vs InvMass;Inv. Mass [GeV];Centrality;#pairs",
375                         500,0.,5., 102,-1,101,
376                         AliDielectronVarManager::kM, AliDielectronVarManager::kCentrality);
377   histos->UserHistogram("Pair","PairPt_Centrality","Centrality vs PairPt;Pair Pt [GeV];Centrality;#pairs",
378                         160,0.,8., 102,-1,101,
379                         AliDielectronVarManager::kPt, AliDielectronVarManager::kCentrality);
380   
381   
382 /*  
383   //add histograms to Track classes
384   histos->UserHistogram("Pre","Pt","Pt;Pt [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPt);
385   histos->UserHistogram("Pre","Px","Px;Px [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPx);
386   histos->UserHistogram("Pre","Py","Py;Py [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPy);
387   histos->UserHistogram("Pre","Pz","Pz;Pz [GeV];#tracks",200,0,10.,AliDielectronVarManager::kPz);
388   
389   histos->UserHistogram("Pre","ITS_dEdx_P","ITS dEdx;P [GeV];ITS signal (arb units)",
390                         160,0.,8.,700,0.,700.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSsignal,makeLogx);
391   histos->UserHistogram("Pre","TPC_dEdx_P","TPC dEdx;P [GeV];TPC signal (arb units)",
392                         160,0.,8.,120,0.,120.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,makeLogx);
393   
394   histos->UserHistogram("Pre","ITSnSigmaEle_P","ITS number of sigmas Electrons;P [GeV];ITS number of sigmas Electrons",
395                         160,0.,8.,100,-5.,5.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaEle,makeLogx);
396   //histos->UserHistogram("Pre","ITSnSigmaPio_P","ITS number of sigmas Pions;P [GeV];ITS number of sigmas Pions",
397   //                      160,0.,8.,200,-10.,10.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaPio,makeLogx);
398   //histos->UserHistogram("Pre","ITSnSigmaKao_P","ITS number of sigmas Kaons;P [GeV];ITS number of sigmas Kaons",
399   //                      160,0.,8.,200,-10.,10.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaKao,makeLogx);
400   //histos->UserHistogram("Pre","ITSnSigmaPro_P","ITS number of sigmas Protons;P [GeV];ITS number of sigmas Protons",
401   //                      160,0.,8.,200,-10.,10.,AliDielectronVarManager::kP,AliDielectronVarManager::kITSnSigmaPro,makeLogx);
402   
403   histos->UserHistogram("Pre","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons",
404                         160,0.,8.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,makeLogx);
405   histos->UserHistogram("Pre","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions",
406                         160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,makeLogx);
407   histos->UserHistogram("Pre","TPCnSigmaKao_P","TPC number of sigmas Kaons;P [GeV];TPC number of sigmas Kaons",
408                         160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaKao,makeLogx);
409   histos->UserHistogram("Pre","TPCnSigmaPro_P","TPC number of sigmas Protons;P [GeV];TPC number of sigmas Protons",
410                         160,0.,8.,200,-10.,10.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPro,makeLogx);
411 */  
412   
413   die->SetHistogramManager(histos);
414 }
415
416
417 void InitCF(AliDielectron* die, Int_t cutDefinition)
418 {
419   //
420   // Setupd the CF Manager if needed
421   //
422   AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
423   
424   //pair variables
425   cf->AddVariable(AliDielectronVarManager::kP,100,0.,5.);
426   cf->AddVariable(AliDielectronVarManager::kM,200,-0.01,3.99); //20Mev Steps
427   cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
428   
429   cf->AddVariable(AliDielectronVarManager::kCentrality,"0.,5.,10.,20.,30.,50.,80.,100.");
430   
431   //leg variables
432   cf->AddVariable(AliDielectronVarManager::kP,160,0.,8.,kTRUE);
433   cf->AddVariable(AliDielectronVarManager::kITSsignal,350,0.,700.,kTRUE);
434   cf->AddVariable(AliDielectronVarManager::kTPCsignal,60,0.,120.,kTRUE);
435   cf->AddVariable(AliDielectronVarManager::kHaveSameMother,21,-10,10,kTRUE);
436   
437   //only in this case write MC truth info
438   if (MCenabled) { // more elegant: die->GetHasMC() 
439     cf->SetStepForMCtruth();
440     cf->SetStepsForMCtruthOnly();
441     cf->AddVariable(AliDielectronVarManager::kPdgCode,10000,-5000.5,4999.5,kTRUE);
442     cf->AddVariable(AliDielectronVarManager::kPdgCodeMother,10000,-5000.5,4999.5,kTRUE);
443   }
444   
445   cf->SetStepsForSignal();
446   die->SetCFManagerPair(cf);
447 }