]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/TakuAlberica/pair/ana_sgl.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / TakuAlberica / pair / ana_sgl.h
1 //////////////////////////////////////////////////////////
2 // This class has been automatically generated on
3 // Thu Jun  9 22:36:19 2011 by ROOT version 5.28/00d
4 // from TTree tree_MultiDie_CENT1/single
5 // found on file: Resultstakuv2c123456AnalysisResults_t.root
6 //////////////////////////////////////////////////////////
7
8 #ifndef ana_sgl_h
9 #define ana_sgl_h
10
11 #include <iostream>
12 #include <TROOT.h>
13 #include <TChain.h>
14 #include <TFile.h>
15 #include <TH1.h>
16 #include <TH2.h>
17 #include <TDirectory.h>
18 #include <vector>
19 #include <deque>
20 #include <cstdlib>
21 #include <TMath.h>
22
23 using namespace std;
24
25
26 class etrk;
27
28 struct etrk{ 
29   etrk(double Cent=0, double PXv=0, double PYv=0, double PZv=0, 
30        double Xv=0, double Yv=0, double Zv=0,
31        double Px=0, double Py=0, double Pz=0, double Pt=0,
32        double Eta=0, double Phi=0, double Theta=0, double Tpc=0, double Beta=0, 
33        double E=0, double dPhi=0, double dEta=0,
34        double Ntpc_ele1=0,double Ntpc_pio1=0,double Ntpc_kao1=0, double Ntpc_pro1=0,
35        double Ntof_ele1=0,double Ntof_pio1=0,double Ntof_kao1=0, double Ntof_pro1=0,
36        double Its=0, double Nits=0, double Ntpc=0, double Dcaxy=0, double Dcaz=0)
37     :
38     cent(Cent), pxv(PXv), pyv(PYv), pzv(PZv),
39     xv(Xv), yv(Yv), zv(Zv),
40     px(Px), py(Py), pz(Pz), pt(Pt),
41     eta(Eta), phi(Phi), theta(Theta), tpc(Tpc), beta(Beta),
42     e(E), dphi(dPhi), deta(dEta),
43     ntpc_ele(Ntpc_ele1), ntpc_pio(Ntpc_pio1), ntpc_kao(Ntpc_kao1), ntpc_pro(Ntpc_pro1),
44     ntof_ele(Ntof_ele1), ntof_pio(Ntof_pio1), ntof_kao(Ntof_kao1), ntof_pro(Ntof_pro1),
45     its(Its), nits(Nits), ntpc(Ntpc), dcaxy(Dcaxy), dcaz(Dcaz)
46   {
47     conv_flag = 1;
48     ghost_flag = 1;
49   }
50
51   double E(void){TMath::Sqrt(me*me+px*px+py*py+pz*pz);}
52   double p(void){TMath::Sqrt(px*px+py*py+pz*pz);}
53
54 private:
55   static const float me=0.000511; 
56 public:
57   double cent;
58   double pxv;
59   double pyv;
60   double pzv;
61   double xv;
62   double yv;
63   double zv;
64   double px;
65   double py;
66   double pz;
67   double pt;
68   double eta;
69   double phi;
70   double theta;
71   double tpc;
72   double beta;
73   double e;
74   double dphi;
75   double deta;
76   double ntpc_ele;
77   double ntpc_pio;
78   double ntpc_kao;
79   double ntpc_pro;
80   double ntof_ele;
81   double ntof_pio;
82   double ntof_kao;
83   double ntof_pro;
84   double its;
85   double nits;
86   double ntpc;
87   double dcaxy;
88   double dcaz;
89   int conv_flag;
90   int ghost_flag;
91 };
92
93
94 class ana_sgl {
95 public :
96    TTree          *fChain;   //!pointer to the analyzed TTree or TChain
97    Int_t           fCurrent; //!current Tree number in a TChain
98
99    // Declaration of leaf types
100    Int_t           kNEvent;
101    Double_t        kMag;
102    TObjArray       *fkTriggerInfo;
103    Double_t        kTriggerMask;
104    Int_t           kTriggerCent;
105    Double_t        fkNCut;
106    Double_t        fkRunNumber;
107    Double_t        fkCentrality;
108    Double_t        fkXvPrim;
109    Double_t        fkYvPrim;
110    Double_t        fkZvPrim;
111    Double_t        fkXRes;
112    Double_t        fkYRes;
113    Double_t        fkZRes;
114    Double_t        fkNTrk;
115    Double_t        fkTracks;
116    Double_t        fkNacc;
117    Double_t        fkNaccTrcklts;
118    Double_t        fkNch;
119    Double_t        fkZDCN1E;
120    Double_t        fkZDCP1E;
121    Double_t        fkZDCN2E;
122    Double_t        fkZDCP2E;
123    Double_t        fkV0A;
124    Double_t        fkV0C;
125    Int_t           fkNPar;
126    Double_t        kPx[200];   //[fkNPar]
127    Double_t        kPy[200];   //[fkNPar]
128    Double_t        kPz[200];   //[fkNPar]
129    Double_t        kPt[200];   //[fkNPar]
130    Double_t        kP[200];   //[fkNPar]
131    Double_t        kXv[200];   //[fkNPar]
132    Double_t        kYv[200];   //[fkNPar]
133    Double_t        kZv[200];   //[fkNPar]
134    Double_t        kOneOverPt[200];   //[fkNPar]
135    Double_t        kPhi[200];   //[fkNPar]
136    Double_t        kTheta[200];   //[fkNPar]
137    Double_t        kEta[200];   //[fkNPar]
138    Double_t        kY[200];   //[fkNPar]
139    Double_t        kE[200];   //[fkNPar]
140    Double_t        kM[200];   //[fkNPar]
141    Double_t        kCharge[200];   //[fkNPar]
142    Double_t        kNclsITS[200];   //[fkNPar]
143    Double_t        kNclsTPC[200];   //[fkNPar]
144    Double_t        kNclsTPCiter1[200];   //[fkNPar]
145    Double_t        kNFclsTPC[200];   //[fkNPar]
146    Double_t        kNFclsTPCr[200];   //[fkNPar]
147    Double_t        kNFclsTPCrFrac[200];   //[fkNPar]
148    Double_t        kTPCsignalN[200];   //[fkNPar]
149    Double_t        kTPCsignalNfrac[200];   //[fkNPar]
150    Double_t        kTPCchi2Cl[200];   //[fkNPar]
151    Double_t        kTrackStatus[200];   //[fkNPar]
152    Double_t        kNclsTRD[200];   //[fkNPar]
153    Double_t        kTRDntracklets[200];   //[fkNPar]
154    Double_t        kTRDpidQuality[200];   //[fkNPar]
155    Double_t        kTRDprobEle[200];   //[fkNPar]
156    Double_t        kTRDprobPio[200];   //[fkNPar]
157    Double_t        kImpactParXY[200];   //[fkNPar]
158    Double_t        kImpactParZ[200];   //[fkNPar]
159    Double_t        kTrackLength[200];   //[fkNPar]
160    Double_t        kPdgCode[200];   //[fkNPar]
161    Double_t        kPdgCodeMother[200];   //[fkNPar]
162    Double_t        kPdgCodeGrandMother[200];   //[fkNPar]
163    Double_t        kNumberOfDaughters[200];   //[fkNPar]
164    Double_t        kHaveSameMother[200];   //[fkNPar]
165    Double_t        kIsJpsiPrimary[200];   //[fkNPar]
166    Double_t        kITSsignal[200];   //[fkNPar]
167    Double_t        kITSsignalSSD1[200];   //[fkNPar]
168    Double_t        kITSsignalSSD2[200];   //[fkNPar]
169    Double_t        kITSsignalSDD1[200];   //[fkNPar]
170    Double_t        kITSsignalSDD2[200];   //[fkNPar]
171    Double_t        kITSclusterMap[200];   //[fkNPar]
172    Double_t        kITSnSigmaEle[200];   //[fkNPar]
173    Double_t        kITSnSigmaPio[200];   //[fkNPar]
174    Double_t        kITSnSigmaMuo[200];   //[fkNPar]
175    Double_t        kITSnSigmaKao[200];   //[fkNPar]
176    Double_t        kITSnSigmaPro[200];   //[fkNPar]
177    Double_t        kPIn[200];   //[fkNPar]
178    Double_t        kTPCsignal[200];   //[fkNPar]
179    Double_t        kTOFsignal[200];   //[fkNPar]
180    Double_t        kTOFbeta[200];   //[fkNPar]
181    Double_t        kTPCnSigmaEle[200];   //[fkNPar]
182    Double_t        kTPCnSigmaPio[200];   //[fkNPar]
183    Double_t        kTPCnSigmaMuo[200];   //[fkNPar]
184    Double_t        kTPCnSigmaKao[200];   //[fkNPar]
185    Double_t        kTPCnSigmaPro[200];   //[fkNPar]
186    Double_t        kTOFnSigmaEle[200];   //[fkNPar]
187    Double_t        kTOFnSigmaPio[200];   //[fkNPar]
188    Double_t        kTOFnSigmaMuo[200];   //[fkNPar]
189    Double_t        kTOFnSigmaKao[200];   //[fkNPar]
190    Double_t        kTOFnSigmaPro[200];   //[fkNPar]
191    Double_t        kKinkIndex0[200];   //[fkNPar]
192    Double_t        kChi2NDF[200];   //[fkNPar]
193    Double_t        kDecayLength[200];   //[fkNPar]
194    Double_t        kR[200];   //[fkNPar]
195    Double_t        kOpeningAngle[200];   //[fkNPar]
196    Double_t        kThetaHE[200];   //[fkNPar]
197    Double_t        kPhiHE[200];   //[fkNPar]
198    Double_t        kThetaCS[200];   //[fkNPar]
199    Double_t        kPhiCS[200];   //[fkNPar]
200    Double_t        kLegDist[200];   //[fkNPar]
201    Double_t        kLegDistXY[200];   //[fkNPar]
202    Double_t        kDeltaEta[200];   //[fkNPar]
203    Double_t        kDeltaPhi[200];   //[fkNPar]
204    Double_t        kMerr[200];   //[fkNPar]
205    Double_t        kDCA[200];   //[fkNPar]
206    Double_t        kPairType[200];   //[fkNPar]
207    Double_t        kPseudoProperTime[200];   //[fkNPar]
208    Double_t        kXvPrim[200];   //[fkNPar]
209    Double_t        kYvPrim[200];   //[fkNPar]
210    Double_t        kZvPrim[200];   //[fkNPar]
211    Double_t        kXRes[200];   //[fkNPar]
212    Double_t        kYRes[200];   //[fkNPar]
213    Double_t        kZRes[200];   //[fkNPar]
214    Double_t        kNTrk[200];   //[fkNPar]
215    Double_t        kTracks[200];   //[fkNPar]
216    Double_t        kNacc[200];   //[fkNPar]
217    Double_t        kNaccTrcklts[200];   //[fkNPar]
218    Double_t        kNch[200];   //[fkNPar]
219    Double_t        kCentrality[200];   //[fkNPar]
220    Double_t        kNevents[200];   //[fkNPar]
221
222    // List of branches
223    TBranch        *b_kNEvent;   //!
224    TBranch        *b_kMag;   //!
225    TBranch        *b_fkTriggerInfo;   //!
226    TBranch        *b_kTriggerMask;   //!
227    TBranch        *b_kTriggerCent;   //!
228    TBranch        *b_fkNCut;   //!
229    TBranch        *b_fkRunNumber;   //!
230    TBranch        *b_fkCentrality;   //!
231    TBranch        *b_fkXvPrim;   //!
232    TBranch        *b_fkYvPrim;   //!
233    TBranch        *b_fkZvPrim;   //!
234    TBranch        *b_fkXRes;   //!
235    TBranch        *b_fkYRes;   //!
236    TBranch        *b_fkZRes;   //!
237    TBranch        *b_fkNTrk;   //!
238    TBranch        *b_fkTracks;   //!
239    TBranch        *b_fkNacc;   //!
240    TBranch        *b_fkNaccTrcklts;   //!
241    TBranch        *b_fkNch;   //!
242    TBranch        *b_fkZDCN1E;   //!
243    TBranch        *b_fkZDCP1E;   //!
244    TBranch        *b_fkZDCN2E;   //!
245    TBranch        *b_fkZDCP2E;   //!
246    TBranch        *b_fkV0A;   //!
247    TBranch        *b_fkV0C;   //!
248    TBranch        *b_fkNPar;   //!
249    TBranch        *b_kPx;   //!
250    TBranch        *b_kPy;   //!
251    TBranch        *b_kPz;   //!
252    TBranch        *b_kPt;   //!
253    TBranch        *b_kP;   //!
254    TBranch        *b_kXv;   //!
255    TBranch        *b_kYv;   //!
256    TBranch        *b_kZv;   //!
257    TBranch        *b_kOneOverPt;   //!
258    TBranch        *b_kPhi;   //!
259    TBranch        *b_kTheta;   //!
260    TBranch        *b_kEta;   //!
261    TBranch        *b_kY;   //!
262    TBranch        *b_kE;   //!
263    TBranch        *b_kM;   //!
264    TBranch        *b_kCharge;   //!
265    TBranch        *b_kNclsITS;   //!
266    TBranch        *b_kNclsTPC;   //!
267    TBranch        *b_kNclsTPCiter1;   //!
268    TBranch        *b_kNFclsTPC;   //!
269    TBranch        *b_kNFclsTPCr;   //!
270    TBranch        *b_kNFclsTPCrFrac;   //!
271    TBranch        *b_kTPCsignalN;   //!
272    TBranch        *b_kTPCsignalNfrac;   //!
273    TBranch        *b_kTPCchi2Cl;   //!
274    TBranch        *b_kTrackStatus;   //!
275    TBranch        *b_kNclsTRD;   //!
276    TBranch        *b_kTRDntracklets;   //!
277    TBranch        *b_kTRDpidQuality;   //!
278    TBranch        *b_kTRDprobEle;   //!
279    TBranch        *b_kTRDprobPio;   //!
280    TBranch        *b_kImpactParXY;   //!
281    TBranch        *b_kImpactParZ;   //!
282    TBranch        *b_kTrackLength;   //!
283    TBranch        *b_kPdgCode;   //!
284    TBranch        *b_kPdgCodeMother;   //!
285    TBranch        *b_kPdgCodeGrandMother;   //!
286    TBranch        *b_kNumberOfDaughters;   //!
287    TBranch        *b_kHaveSameMother;   //!
288    TBranch        *b_kIsJpsiPrimary;   //!
289    TBranch        *b_kITSsignal;   //!
290    TBranch        *b_kITSsignalSSD1;   //!
291    TBranch        *b_kITSsignalSSD2;   //!
292    TBranch        *b_kITSsignalSDD1;   //!
293    TBranch        *b_kITSsignalSDD2;   //!
294    TBranch        *b_kITSclusterMap;   //!
295    TBranch        *b_kITSnSigmaEle;   //!
296    TBranch        *b_kITSnSigmaPio;   //!
297    TBranch        *b_kITSnSigmaMuo;   //!
298    TBranch        *b_kITSnSigmaKao;   //!
299    TBranch        *b_kITSnSigmaPro;   //!
300    TBranch        *b_kPIn;   //!
301    TBranch        *b_kTPCsignal;   //!
302    TBranch        *b_kTOFsignal;   //!
303    TBranch        *b_kTOFbeta;   //!
304    TBranch        *b_kTPCnSigmaEle;   //!
305    TBranch        *b_kTPCnSigmaPio;   //!
306    TBranch        *b_kTPCnSigmaMuo;   //!
307    TBranch        *b_kTPCnSigmaKao;   //!
308    TBranch        *b_kTPCnSigmaPro;   //!
309    TBranch        *b_kTOFnSigmaEle;   //!
310    TBranch        *b_kTOFnSigmaPio;   //!
311    TBranch        *b_kTOFnSigmaMuo;   //!
312    TBranch        *b_kTOFnSigmaKao;   //!
313    TBranch        *b_kTOFnSigmaPro;   //!
314    TBranch        *b_kKinkIndex0;   //!
315    TBranch        *b_kChi2NDF;   //!
316    TBranch        *b_kDecayLength;   //!
317    TBranch        *b_kR;   //!
318    TBranch        *b_kOpeningAngle;   //!
319    TBranch        *b_kThetaHE;   //!
320    TBranch        *b_kPhiHE;   //!
321    TBranch        *b_kThetaCS;   //!
322    TBranch        *b_kPhiCS;   //!
323    TBranch        *b_kLegDist;   //!
324    TBranch        *b_kLegDistXY;   //!
325    TBranch        *b_kDeltaEta;   //!
326    TBranch        *b_kDeltaPhi;   //!
327    TBranch        *b_kMerr;   //!
328    TBranch        *b_kDCA;   //!
329    TBranch        *b_kPairType;   //!
330    TBranch        *b_kPseudoProperTime;   //!
331    TBranch        *b_kXvPrim;   //!
332    TBranch        *b_kYvPrim;   //!
333    TBranch        *b_kZvPrim;   //!
334    TBranch        *b_kXRes;   //!
335    TBranch        *b_kYRes;   //!
336    TBranch        *b_kZRes;   //!
337    TBranch        *b_kNTrk;   //!
338    TBranch        *b_kTracks;   //!
339    TBranch        *b_kNacc;   //!
340    TBranch        *b_kNaccTrcklts;   //!
341    TBranch        *b_kNch;   //!
342    TBranch        *b_kCentrality;   //!
343    TBranch        *b_kNevents;   //!
344
345    ana_sgl(TTree *tree=0);
346    virtual ~ana_sgl();
347    virtual Int_t    Cut(Long64_t entry);
348    virtual Int_t    GetEntry(Long64_t entry);
349    virtual Long64_t LoadTree(Long64_t entry);
350    virtual void     Init(TTree *tree);
351    virtual void     Loop();
352    virtual Bool_t   Notify();
353    virtual void     Show(Long64_t entry = -1);
354
355
356    //////////my own function/////////////////
357
358    TH2D *hdedx_pt;
359    TH2D *hdedx_tof_elec_pt;
360    TH2D *hdedx_tof_all_pt;
361    TH2D *hdedx_tof_elec_emc_pt;
362    TH2D *hdedx_tof_all_emc_pt;
363    TH2D *hdedx_emc_pt;
364
365    TH2D *hbetatof_pt;
366    TH2D *hbetatof_tof_elec_pt;
367    TH2D *hbetatof_tof_all_pt;
368    TH2D *hbetatof_tof_elec_emc_pt;
369    TH2D *hbetatof_tof_all_emc_pt;
370    TH2D *hbetatof_emc_pt;
371
372    TH1D *hdedx[1000]; 
373    TH1D *hdedx_tof_elec[1000]; 
374    TH1D *hdedx_tof_all[1000]; 
375    TH1D *hdedx_tof_elec_emc[1000]; 
376    TH1D *hdedx_tof_all_emc[1000]; 
377    TH1D *hdedx_emc[1000]; 
378
379
380    TH1D *fEventStat;                  //! Histogram with event statistics
381    TH1D *fEvent;
382    TH2D *fdEdXvsPt;
383    TH2D *fdEdXnSigmaElecvsPt;
384    TH2D *fTOFbetavsPt;
385    TH2D *fTOFnSigmaElecvsPt;
386    TH1F *hCentrality;
387    TH2F *hV0AC;
388    TH2F *hV0AC_Ntrk;
389    TH2F *hV0AC_NaccTrcklts;
390
391
392
393    TH2D *fdEdXvsPtWithCut;
394    TH1D *fPtElec[2];
395    
396    TH2D *fNelc_pos_cent[10]; 
397    TH1D *fNelc_all_cent[10];
398    
399    TH2D *fNelc_pos; 
400    TH1D *fNelc_all;
401    TH2D *fNelc_all_pT;
402
403
404    //// pair tree
405    TH2D *hmasspt[7][11];
406    TH2D *hmasspt_weight[7][11];
407
408    TFile *fout; 
409    Float_t fBinWidth ;
410    Int_t nHistos ;
411
412    void ana_init(char *filename);
413    void ana_event(int ientry, int jentry);
414    void ana_end(void);
415    void loop_a_file(char *filename);
416    void ana_set_simflag(bool a) { simflag = a;}
417
418    bool kTOFcut(int itrk);
419    bool GlobalTrackcut(int itrk);
420    //bool PairTrackcut(int itrk);
421    void fill_histograms(int itrk);
422    void fill_to_tree_variables(void);
423    void fill_to_tree_track_variables(int itrk);
424    void add_histograms(TFile *fin);
425    void select_trigger(int trig){ sel_trigger = trig ; }
426
427
428    //// cut function
429    void set_tpc_dedx_cuts(double low, double high){
430      d_tpc_dedx_low = low;
431      d_tpc_dedx_high = high;
432    };
433    void set_tof_cuts(double low, double high){
434      d_flag_tof_cut = true;
435      d_tof_low = low;
436      d_tof_high = high;
437    };
438    
439    void set_veto_for_kaon(double low, double high){
440      d_flag_kaon_veto = true;
441      d_dedx_kaon_veto_low = low;
442      d_dedx_kaon_veto_high = high;
443    }
444
445    void set_veto_for_proton(double low, double high){
446      d_flag_proton_veto = true;
447      d_dedx_proton_veto_low = low;
448      d_dedx_proton_veto_high = high;
449    }
450
451    void enable_pair_emc_cut(double low, double high){
452      d_flag_emc_cut = true;
453      d_emc_low = low;
454      d_emc_high = high;
455    };
456
457    void enable_pair_phiv_cut(double low){
458      d_flag_phiv = true;
459      d_phiv_cut = low;
460    };
461
462    void enable_pait_pt_cut(double low, double high){
463      d_flag_pt_cut = true;
464      d_pt_cut_low = low;
465      d_pt_cut_high = high;
466    };
467
468    void print_cuts(void);
469
470    //// private functions 
471
472    void calc_pair(vector<etrk> e1, vector<etrk> e2);
473    void randomize_pool(vector<etrk> e1, vector<etrk> e2);
474    //void fill_pair(etrk *e1, etrk *e2, int type);
475    void fill_pair(vector<etrk>::iterator e1, vector<etrk>::iterator e2, int type);
476    bool PairTrackcut(vector<etrk>::iterator e1, vector<etrk>::iterator e2);
477    bool reject_conversion(bool val){d_conv_flag = val;}
478    void check_conversion_pairs(vector<etrk> &e1, vector<etrk> &e2);
479    void check_ghost_pairs(vector<etrk> &e1);
480    void calc_vars(vector<etrk>::iterator e1, vector<etrk>::iterator e2, double &mass, double &phiv, double &px, double &py, double&pz,
481                   double &pt, double &e, double &phi, double &eta, double &cos, double &psi);
482    bool pair_cut(void);
483
484    TTree *d_tree;
485    TTree *d_ntpair;
486    bool  simflag;
487    int   sel_trigger;
488
489  private:
490    bool d_flag_tof_cut;
491    bool d_flag_emc_cut;
492    bool d_flag_phiv;
493    bool d_flag_pt_cut;
494    bool d_flag_kaon_veto;
495    bool d_flag_proton_veto;
496    double d_tpc_dedx_low;
497    double d_tpc_dedx_high;
498    double d_tof_low;
499    double d_tof_high;
500    double d_emc_low;
501    double d_emc_high;
502    double d_phiv_cut;
503    double d_pt_cut_low ;
504    double d_pt_cut_high ;
505    double d_dedx_kaon_veto_low;   
506    double d_dedx_kaon_veto_high;
507    double d_dedx_proton_veto_low;   
508    double d_dedx_proton_veto_high;
509
510    bool magnetic_field_mm ;
511    bool d_conv_flag;
512    Int_t d_evt;
513    Double_t d_cent;
514    Double_t d_ntrk;
515    Double_t d_xvprim;
516    Double_t d_yvprim;
517    Double_t d_zvprim;
518    Double_t d_nacctrklets;
519    Double_t d_xres;
520    Double_t d_yres;
521    Double_t d_zres;
522    Int_t d_nelc;
523    Double_t d_px[100];
524    Double_t d_py[100];
525    Double_t d_pz[100];
526    Double_t d_p[100];
527    Double_t d_pt[100];
528    Double_t d_xv[100];
529    Double_t d_yv[100];
530    Double_t d_zv[100];
531    Double_t d_phi[100];
532    Double_t d_theta[100];
533    Double_t d_eta[100];
534    Double_t d_c[100];
535    Double_t d_nclusITS[100];
536    Double_t d_nclusTPC[100];
537    Double_t d_nclusTPCiter[100];
538    Double_t d_nfclusTPC[100];
539    Double_t d_nfclusTPCr[100];
540    Double_t d_nfclusTPCrFrac[100];
541    Double_t d_TPCsignalN[100];
542    Double_t d_TPCsignalNfrac[100];
543    Double_t d_TPCchi2cl[100];
544    Double_t d_trkstat[100];
545    Double_t d_nclsTRD[100];
546    Double_t d_TRDntracklets[100];
547    Double_t d_TRDpidquality[100];
548    Double_t d_TRDprobEle[100];
549    Double_t d_TRDprobPio[100];
550    Double_t d_impactXY[100];
551    Double_t d_impactZ[100];
552    Double_t d_tracklength[100];
553    Double_t d_ITSsignal[100];
554    Double_t d_ITSnsigmaEle[100];
555    Double_t d_ITSnsigmaPio[100];
556    Double_t d_ITSnsigmaMuo[100];
557    Double_t d_ITSnsigmaKao[100];
558    Double_t d_ITSnsigmaPro[100];
559    Double_t d_PIn[100];
560    Double_t d_TPCsignal[100];
561    Double_t d_TOFsignal[100];
562    Double_t d_TOFbeta[100];
563    Double_t d_TPCnSigmaEle[100];
564    Double_t d_TPCnSigmaPio[100];
565    Double_t d_TPCnSigmaMuo[100];
566    Double_t d_TPCnSigmaKao[100];
567    Double_t d_TPCnSigmaPro[100];
568    Double_t d_TOFnSigmaEle[100];
569    Double_t d_TOFnSigmaPio[100];
570    Double_t d_TOFnSigmaMuo[100];
571    Double_t d_TOFnSigmaKao[100];
572    Double_t d_TOFnSigmaPro[100];
573
574    Double_t d_chi2ndf[100];
575    Double_t d_E[100];
576    Double_t d_dphi[100];
577    Double_t d_deta[100];
578
579    //////// pair variable 
580    Double_t d_run;
581    Int_t d_event;
582    Double_t d_centrality;
583    Double_t d_prim_xv;
584    Double_t d_prim_yv;
585    Double_t d_prim_zv;
586    Double_t d_mass;
587    Double_t d_pxpair;
588    Double_t d_pypair;
589    Double_t d_pzpair;
590    Double_t d_ptpair;
591    Double_t d_epair;
592    Double_t d_etapair;
593    Double_t d_phipair;
594    Double_t d_cos;
595    Double_t d_phiv;
596    Double_t d_psi;
597    Int_t d_pairtype;
598
599    /////////////////////////
600    Double_t d_cent1;
601    Double_t d_xv1;
602    Double_t d_yv1;
603    Double_t d_zv1;
604    Double_t d_px1;
605    Double_t d_py1;
606    Double_t d_pz1;
607    Double_t d_pt1;
608    Double_t d_eta1;
609    Double_t d_phi1;
610    Double_t d_theta1;
611    Double_t d_tpc1;
612    Double_t d_ntpc_ele1;
613    Double_t d_ntpc_pio1;
614    Double_t d_ntpc_kao1;
615    Double_t d_ntpc_pro1;
616    Double_t d_beta1;
617    Double_t d_ntof_ele1;
618    Double_t d_ntof_pio1;
619    Double_t d_ntof_kao1;
620    Double_t d_ntof_pro1;
621    Double_t d_its1;
622    Double_t d_nits1;
623    Double_t d_ntpc1;
624    Double_t d_e1;
625    Double_t d_dphi1;
626    Double_t d_deta1;
627    Double_t d_dcaxy1;
628    Double_t d_dcaz1;
629    Int_t d_conv1;
630
631    Double_t d_cent2;
632    Double_t d_xv2;
633    Double_t d_yv2;
634    Double_t d_zv2;
635    Double_t d_px2;
636    Double_t d_py2;
637    Double_t d_pz2;
638    Double_t d_pt2;
639    Double_t d_eta2;
640    Double_t d_phi2;
641    Double_t d_theta2;
642    Double_t d_tpc2;
643    Double_t d_ntpc_ele2;
644    Double_t d_ntpc_pio2;
645    Double_t d_ntpc_kao2;
646    Double_t d_ntpc_pro2;
647    Double_t d_beta2;
648    Double_t d_ntof_ele2;
649    Double_t d_ntof_pio2;
650    Double_t d_ntof_kao2;
651    Double_t d_ntof_pro2;
652    Double_t d_its2;
653    Double_t d_nits2;
654    Double_t d_ntpc2;
655    Double_t d_e2;
656    Double_t d_dphi2;
657    Double_t d_deta2;
658    Double_t d_dcaxy2;
659    Double_t d_dcaz2;
660     Int_t d_conv2;
661
662    Int_t nelec_pos[10]; //pT bin;
663
664    vector<etrk> vem;
665    vector<etrk> vep;
666    vector<etrk> vem_tmp;
667    vector<etrk> vep_tmp;
668
669
670 };
671
672 #endif
673
674 #ifdef ana_sgl_cxx
675 ana_sgl::ana_sgl(TTree *tree)
676 {
677 // if parameter tree is not specified (or zero), connect the file
678 // used to generate this class and read the Tree.
679    if (tree == 0) {
680       TFile *f = (TFile*)gROOT->GetListOfFiles()->FindObject("Resultstakuv2c123456AnalysisResults_t.root");
681       if (!f) {
682          f = new TFile("Resultstakuv2c123456AnalysisResults_t.root");
683          f->cd("Resultstakuv2c123456AnalysisResults_t.root:/PWG3_dielectron");
684       }
685       tree = (TTree*)gDirectory->Get("tree_MultiDie_CENT1");
686
687    }
688    Init(tree);
689    d_conv_flag = false;
690 }
691
692 ana_sgl::~ana_sgl()
693 {
694    if (!fChain) return;
695    delete fChain->GetCurrentFile();
696 }
697
698 Int_t ana_sgl::GetEntry(Long64_t entry)
699 {
700 // Read contents of entry.
701    if (!fChain) return 0;
702    return fChain->GetEntry(entry);
703 }
704 Long64_t ana_sgl::LoadTree(Long64_t entry)
705 {
706 // Set the environment to read one entry
707    if (!fChain) return -5;
708    Long64_t centry = fChain->LoadTree(entry);
709    if (centry < 0) return centry;
710    if (!fChain->InheritsFrom(TChain::Class()))  return centry;
711    TChain *chain = (TChain*)fChain;
712    if (chain->GetTreeNumber() != fCurrent) {
713       fCurrent = chain->GetTreeNumber();
714       Notify();
715    }
716    return centry;
717 }
718
719 void ana_sgl::Init(TTree *tree)
720 {
721    // The Init() function is called when the selector needs to initialize
722    // a new tree or chain. Typically here the branch addresses and branch
723    // pointers of the tree will be set.
724    // It is normally not necessary to make changes to the generated
725    // code, but the routine can be extended by the user if needed.
726    // Init() will be called many times when running on PROOF
727    // (once per file to be processed).
728
729    // Set branch addresses and branch pointers
730    if (!tree) return;
731    fChain = tree;
732    fCurrent = -1;
733    fChain->SetMakeClass(1);
734
735    fChain->SetBranchAddress("kNEvent", &kNEvent, &b_kNEvent);
736    fChain->SetBranchAddress("kMag", &kMag, &b_kMag);
737    fChain->SetBranchAddress("fkTriggerInfo", &fkTriggerInfo, &b_fkTriggerInfo);
738    fChain->SetBranchAddress("kTriggerMask", &kTriggerMask, &b_kTriggerMask);
739    fChain->SetBranchAddress("kTriggerCent", &kTriggerCent, &b_kTriggerCent);
740    fChain->SetBranchAddress("fkNCut", &fkNCut, &b_fkNCut);
741    fChain->SetBranchAddress("fkRunNumber", &fkRunNumber, &b_fkRunNumber);
742    fChain->SetBranchAddress("fkCentrality", &fkCentrality, &b_fkCentrality);
743    fChain->SetBranchAddress("fkXvPrim", &fkXvPrim, &b_fkXvPrim);
744    fChain->SetBranchAddress("fkYvPrim", &fkYvPrim, &b_fkYvPrim);
745    fChain->SetBranchAddress("fkZvPrim", &fkZvPrim, &b_fkZvPrim);
746    fChain->SetBranchAddress("fkXRes", &fkXRes, &b_fkXRes);
747    fChain->SetBranchAddress("fkYRes", &fkYRes, &b_fkYRes);
748    fChain->SetBranchAddress("fkZRes", &fkZRes, &b_fkZRes);
749    fChain->SetBranchAddress("fkNTrk", &fkNTrk, &b_fkNTrk);
750    fChain->SetBranchAddress("fkTracks", &fkTracks, &b_fkTracks);
751    fChain->SetBranchAddress("fkNacc", &fkNacc, &b_fkNacc);
752    fChain->SetBranchAddress("fkNaccTrcklts", &fkNaccTrcklts, &b_fkNaccTrcklts);
753    fChain->SetBranchAddress("fkNch", &fkNch, &b_fkNch);
754    fChain->SetBranchAddress("fkZDCN1E", &fkZDCN1E, &b_fkZDCN1E);
755    fChain->SetBranchAddress("fkZDCP1E", &fkZDCP1E, &b_fkZDCP1E);
756    fChain->SetBranchAddress("fkZDCN2E", &fkZDCN2E, &b_fkZDCN2E);
757    fChain->SetBranchAddress("fkZDCP2E", &fkZDCP2E, &b_fkZDCP2E);
758    fChain->SetBranchAddress("fkV0A", &fkV0A, &b_fkV0A);
759    fChain->SetBranchAddress("fkV0C", &fkV0C, &b_fkV0C);
760    fChain->SetBranchAddress("fkNPar", &fkNPar, &b_fkNPar);
761    fChain->SetBranchAddress("kPx", kPx, &b_kPx);
762    fChain->SetBranchAddress("kPy", kPy, &b_kPy);
763    fChain->SetBranchAddress("kPz", kPz, &b_kPz);
764    fChain->SetBranchAddress("kPt", kPt, &b_kPt);
765    fChain->SetBranchAddress("kP", kP, &b_kP);
766    fChain->SetBranchAddress("kXv", kXv, &b_kXv);
767    fChain->SetBranchAddress("kYv", kYv, &b_kYv);
768    fChain->SetBranchAddress("kZv", kZv, &b_kZv);
769    fChain->SetBranchAddress("kOneOverPt", kOneOverPt, &b_kOneOverPt);
770    fChain->SetBranchAddress("kPhi", kPhi, &b_kPhi);
771    fChain->SetBranchAddress("kTheta", kTheta, &b_kTheta);
772    fChain->SetBranchAddress("kEta", kEta, &b_kEta);
773    fChain->SetBranchAddress("kY", kY, &b_kY);
774    fChain->SetBranchAddress("kE", kE, &b_kE);
775    fChain->SetBranchAddress("kM", kM, &b_kM);
776    fChain->SetBranchAddress("kCharge", kCharge, &b_kCharge);
777    fChain->SetBranchAddress("kNclsITS", kNclsITS, &b_kNclsITS);
778    fChain->SetBranchAddress("kNclsTPC", kNclsTPC, &b_kNclsTPC);
779    fChain->SetBranchAddress("kNclsTPCiter1", kNclsTPCiter1, &b_kNclsTPCiter1);
780    fChain->SetBranchAddress("kNFclsTPC", kNFclsTPC, &b_kNFclsTPC);
781    fChain->SetBranchAddress("kNFclsTPCr", kNFclsTPCr, &b_kNFclsTPCr);
782    fChain->SetBranchAddress("kNFclsTPCrFrac", kNFclsTPCrFrac, &b_kNFclsTPCrFrac);
783    fChain->SetBranchAddress("kTPCsignalN", kTPCsignalN, &b_kTPCsignalN);
784    fChain->SetBranchAddress("kTPCsignalNfrac", kTPCsignalNfrac, &b_kTPCsignalNfrac);
785    fChain->SetBranchAddress("kTPCchi2Cl", kTPCchi2Cl, &b_kTPCchi2Cl);
786    fChain->SetBranchAddress("kTrackStatus", kTrackStatus, &b_kTrackStatus);
787    fChain->SetBranchAddress("kNclsTRD", kNclsTRD, &b_kNclsTRD);
788    fChain->SetBranchAddress("kTRDntracklets", kTRDntracklets, &b_kTRDntracklets);
789    fChain->SetBranchAddress("kTRDpidQuality", kTRDpidQuality, &b_kTRDpidQuality);
790    fChain->SetBranchAddress("kTRDprobEle", kTRDprobEle, &b_kTRDprobEle);
791    fChain->SetBranchAddress("kTRDprobPio", kTRDprobPio, &b_kTRDprobPio);
792    fChain->SetBranchAddress("kImpactParXY", kImpactParXY, &b_kImpactParXY);
793    fChain->SetBranchAddress("kImpactParZ", kImpactParZ, &b_kImpactParZ);
794    fChain->SetBranchAddress("kTrackLength", kTrackLength, &b_kTrackLength);
795    fChain->SetBranchAddress("kPdgCode", kPdgCode, &b_kPdgCode);
796    fChain->SetBranchAddress("kPdgCodeMother", kPdgCodeMother, &b_kPdgCodeMother);
797    fChain->SetBranchAddress("kPdgCodeGrandMother", kPdgCodeGrandMother, &b_kPdgCodeGrandMother);
798    fChain->SetBranchAddress("kNumberOfDaughters", kNumberOfDaughters, &b_kNumberOfDaughters);
799    fChain->SetBranchAddress("kHaveSameMother", kHaveSameMother, &b_kHaveSameMother);
800    fChain->SetBranchAddress("kIsJpsiPrimary", kIsJpsiPrimary, &b_kIsJpsiPrimary);
801    fChain->SetBranchAddress("kITSsignal", kITSsignal, &b_kITSsignal);
802    fChain->SetBranchAddress("kITSsignalSSD1", kITSsignalSSD1, &b_kITSsignalSSD1);
803    fChain->SetBranchAddress("kITSsignalSSD2", kITSsignalSSD2, &b_kITSsignalSSD2);
804    fChain->SetBranchAddress("kITSsignalSDD1", kITSsignalSDD1, &b_kITSsignalSDD1);
805    fChain->SetBranchAddress("kITSsignalSDD2", kITSsignalSDD2, &b_kITSsignalSDD2);
806    fChain->SetBranchAddress("kITSclusterMap", kITSclusterMap, &b_kITSclusterMap);
807    fChain->SetBranchAddress("kITSnSigmaEle", kITSnSigmaEle, &b_kITSnSigmaEle);
808    fChain->SetBranchAddress("kITSnSigmaPio", kITSnSigmaPio, &b_kITSnSigmaPio);
809    fChain->SetBranchAddress("kITSnSigmaMuo", kITSnSigmaMuo, &b_kITSnSigmaMuo);
810    fChain->SetBranchAddress("kITSnSigmaKao", kITSnSigmaKao, &b_kITSnSigmaKao);
811    fChain->SetBranchAddress("kITSnSigmaPro", kITSnSigmaPro, &b_kITSnSigmaPro);
812    fChain->SetBranchAddress("kPIn", kPIn, &b_kPIn);
813    fChain->SetBranchAddress("kTPCsignal", kTPCsignal, &b_kTPCsignal);
814    fChain->SetBranchAddress("kTOFsignal", kTOFsignal, &b_kTOFsignal);
815    fChain->SetBranchAddress("kTOFbeta", kTOFbeta, &b_kTOFbeta);
816    fChain->SetBranchAddress("kTPCnSigmaEle", kTPCnSigmaEle, &b_kTPCnSigmaEle);
817    fChain->SetBranchAddress("kTPCnSigmaPio", kTPCnSigmaPio, &b_kTPCnSigmaPio);
818    fChain->SetBranchAddress("kTPCnSigmaMuo", kTPCnSigmaMuo, &b_kTPCnSigmaMuo);
819    fChain->SetBranchAddress("kTPCnSigmaKao", kTPCnSigmaKao, &b_kTPCnSigmaKao);
820    fChain->SetBranchAddress("kTPCnSigmaPro", kTPCnSigmaPro, &b_kTPCnSigmaPro);
821    fChain->SetBranchAddress("kTOFnSigmaEle", kTOFnSigmaEle, &b_kTOFnSigmaEle);
822    fChain->SetBranchAddress("kTOFnSigmaPio", kTOFnSigmaPio, &b_kTOFnSigmaPio);
823    fChain->SetBranchAddress("kTOFnSigmaMuo", kTOFnSigmaMuo, &b_kTOFnSigmaMuo);
824    fChain->SetBranchAddress("kTOFnSigmaKao", kTOFnSigmaKao, &b_kTOFnSigmaKao);
825    fChain->SetBranchAddress("kTOFnSigmaPro", kTOFnSigmaPro, &b_kTOFnSigmaPro);
826    fChain->SetBranchAddress("kKinkIndex0", kKinkIndex0, &b_kKinkIndex0);
827    fChain->SetBranchAddress("kChi2NDF", kChi2NDF, &b_kChi2NDF);
828    fChain->SetBranchAddress("kDecayLength", kDecayLength, &b_kDecayLength);
829    fChain->SetBranchAddress("kR", kR, &b_kR);
830    fChain->SetBranchAddress("kOpeningAngle", kOpeningAngle, &b_kOpeningAngle);
831    fChain->SetBranchAddress("kThetaHE", kThetaHE, &b_kThetaHE);
832    fChain->SetBranchAddress("kPhiHE", kPhiHE, &b_kPhiHE);
833    fChain->SetBranchAddress("kThetaCS", kThetaCS, &b_kThetaCS);
834    fChain->SetBranchAddress("kPhiCS", kPhiCS, &b_kPhiCS);
835    fChain->SetBranchAddress("kLegDist", kLegDist, &b_kLegDist);
836    fChain->SetBranchAddress("kLegDistXY", kLegDistXY, &b_kLegDistXY);
837    fChain->SetBranchAddress("kDeltaEta", kDeltaEta, &b_kDeltaEta);
838    fChain->SetBranchAddress("kDeltaPhi", kDeltaPhi, &b_kDeltaPhi);
839    fChain->SetBranchAddress("kMerr", kMerr, &b_kMerr);
840    fChain->SetBranchAddress("kDCA", kDCA, &b_kDCA);
841    fChain->SetBranchAddress("kPairType", kPairType, &b_kPairType);
842    fChain->SetBranchAddress("kPseudoProperTime", kPseudoProperTime, &b_kPseudoProperTime);
843    fChain->SetBranchAddress("kXvPrim", kXvPrim, &b_kXvPrim);
844    fChain->SetBranchAddress("kYvPrim", kYvPrim, &b_kYvPrim);
845    fChain->SetBranchAddress("kZvPrim", kZvPrim, &b_kZvPrim);
846    fChain->SetBranchAddress("kXRes", kXRes, &b_kXRes);
847    fChain->SetBranchAddress("kYRes", kYRes, &b_kYRes);
848    fChain->SetBranchAddress("kZRes", kZRes, &b_kZRes);
849    fChain->SetBranchAddress("kNTrk", kNTrk, &b_kNTrk);
850    fChain->SetBranchAddress("kTracks", kTracks, &b_kTracks);
851    fChain->SetBranchAddress("kNacc", kNacc, &b_kNacc);
852    fChain->SetBranchAddress("kNaccTrcklts", kNaccTrcklts, &b_kNaccTrcklts);
853    fChain->SetBranchAddress("kNch", kNch, &b_kNch);
854    fChain->SetBranchAddress("kCentrality", kCentrality, &b_kCentrality);
855    fChain->SetBranchAddress("kNevents", kNevents, &b_kNevents);
856    Notify();
857 }
858
859 Bool_t ana_sgl::Notify()
860 {
861    // The Notify() function is called when a new file is opened. This
862    // can be either for a new TTree in a TChain or when when a new TTree
863    // is started when using PROOF. It is normally not necessary to make changes
864    // to the generated code, but the routine can be extended by the
865    // user if needed. The return value is currently not used.
866
867    return kTRUE;
868 }
869
870 void ana_sgl::Show(Long64_t entry)
871 {
872 // Print contents of entry.
873 // If entry is not specified, print current entry
874    if (!fChain) return;
875    fChain->Show(entry);
876 }
877 Int_t ana_sgl::Cut(Long64_t entry)
878 {
879 // This function may be called from Loop.
880 // returns  1 if entry is accepted.
881 // returns -1 otherwise.
882    return 1;
883 }
884 #endif // #ifdef ana_sgl_cxx