]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/AliRsnMonitorTrack.h
Added facilities to include 1-track histograms, for monitoring and checks
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnMonitorTrack.h
1 //
2 // Class AliRsnMonitorTrack
3 //
4 // Monitor object used
5 // for storing info ina TTree
6 // and studying cut values and variables.
7 //
8 // author: A. Pulvirenti
9 //
10
11 #ifndef ALIRSNMONITORTRACK_H
12 #define ALIRSNMONITORTRACK_H
13
14 #include "AliPID.h"
15
16 class AliESDtrack;
17 class AliTOFT0maker;
18 class AliStack;
19
20 class AliRsnMonitorTrack : public TObject {
21 public:
22
23    AliRsnMonitorTrack();
24    AliRsnMonitorTrack(const AliRsnMonitorTrack& copy);
25    //AliRsnMonitorTrack& operator=(const AliRsnMonitorTrack& copy) {MakeCopy(copy); return (*this);}
26    virtual ~AliRsnMonitorTrack() { /*nothing*/ }
27
28    void       Reset();
29    Bool_t     AdoptMC(Int_t label, AliStack *stack);
30
31    Bool_t&    CutsPassed()     {return fCutsPassed;}
32
33    Double_t&  PsimX()          {return fPsim[0];}
34    Double_t&  PrecX()          {return fPrec[0];}
35    Double_t&  PtpcX()          {return fPtpc[0];}
36
37    Double_t&  PsimY()          {return fPsim[1];}
38    Double_t&  PrecY()          {return fPrec[1];}
39    Double_t&  PtpcY()          {return fPtpc[1];}
40
41    Double_t&  PsimZ()          {return fPsim[2];}
42    Double_t&  PrecZ()          {return fPrec[2];}
43    Double_t&  PtpcZ()          {return fPtpc[2];}
44
45    Double_t   PsimT()          {return TMath::Sqrt(fPsim[0] * fPsim[0] + fPsim[1] * fPsim[1]);}
46    Double_t   PrecT()          {return TMath::Sqrt(fPrec[0] * fPrec[0] + fPrec[1] * fPrec[1]);}
47    Double_t   PtpcT()          {return TMath::Sqrt(fPtpc[0] * fPtpc[0] + fPtpc[1] * fPtpc[1]);}
48
49    Double_t   Psim()           {return TMath::Sqrt(PsimT() * PsimT() + fPsim[2] * fPsim[2]);}
50    Double_t   Prec()           {return TMath::Sqrt(PrecT() * PrecT() + fPrec[2] * fPrec[2]);}
51    Double_t   Ptpc()           {return TMath::Sqrt(PtpcT() * PtpcT() + fPtpc[2] * fPtpc[2]);}
52
53    Bool_t&    Prim()           {return fPrim;}
54    Int_t&     PDG()            {return fPDG;}
55    Int_t&     PDGM()           {return fPDGM;}
56    Int_t&     Mother()         {return fMother;}
57
58    Bool_t     OkFlag(UInt_t f) {return ((fStatus & f) != 0);}
59    UInt_t&    Status()         {return fStatus;}
60    Double_t&  Length()         {return fLength;}
61    Int_t&     Charge()         {return fCharge;}
62    Double_t&  DCAr()           {return fDCA[0];}
63    Double_t&  DCAz()           {return fDCA[1];}
64
65    Bool_t&    ITSsa()          {return fITSsa;}
66    Bool_t&    TOFok()          {return fTOFok;}
67
68    Bool_t&    ITSmap(Int_t i)    {if (i >= 0 && i < 6) return fITSmap[i]; else return fITSmap[0];}
69    Int_t      ITScount()         {return (SPDcount() + SDDcount() + SSDcount());}
70    Int_t      SPDcount()         {Int_t count = 0; if (fITSmap[0]) count++; if (fITSmap[1]) count++; return count;}
71    Int_t      SDDcount()         {Int_t count = 0; if (fITSmap[2]) count++; if (fITSmap[3]) count++; return count;}
72    Int_t      SSDcount()         {Int_t count = 0; if (fITSmap[4]) count++; if (fITSmap[5]) count++; return count;}
73    Double_t&  ITSchi2()          {return fITSchi2;}
74    Double_t&  ITSsignal()        {return fITSsignal;}
75    Double_t&  ITSnsigma(Int_t i) {if (i >= 0 && i < AliPID::kSPECIES) return fITSnsigma[i]; else return fITSnsigma[0];}
76
77    Int_t&     TPCcount()         {return fTPCcount;}
78    Double_t&  TPCchi2()          {return fTPCchi2;}
79    Double_t&  TPCsignal()        {return fTPCsignal;}
80    Double_t&  TPCnsigma(Int_t i) {if (i >= 0 && i < AliPID::kSPECIES) return fTPCnsigma[i]; else return fTPCnsigma[0];}
81
82    Double_t&  TOFsignal()        {return fTOFsignal;}
83    Double_t&  TOFsigma(Int_t i)  {if (i >= 0 && i < AliPID::kSPECIES) return fTOFsigma[i]; else return fTOFsigma[0];}
84    Double_t&  TOFref(Int_t i)    {if (i >= 0 && i < AliPID::kSPECIES) return fTOFref[i]; else return fTOFref[0];}
85    Double_t   TOFnsigma(Int_t i) {if (i >= 0 && i < AliPID::kSPECIES) return ((fTOFsignal - fTOFref[i]) / fTOFsigma[i]); return 1E6;}
86
87 private:
88
89    Bool_t       fCutsPassed;                     // did it pass all defined cuts?
90
91    Bool_t       fPrim;                           // is physical primary?
92    Int_t        fPDG;                            // true PDG code
93    Int_t        fPDGM;                           // PDG code of mother (if any)
94    Int_t        fMother;                         // label of mother (if any)
95
96    UInt_t       fStatus;                         // 'status' flag of track in ESD (0 = none)
97    Double_t     fLength;                         // integrated length
98    Int_t        fCharge;                         // track charge
99    Double_t     fDCA[2];                         // DCA ([0] = xy, [1] = z)
100
101    Bool_t       fITSsa;                          // to know if its is ITS standalone (otherwise it is TPC)
102    Bool_t       fTOFok;                          // to know if track has a TOF match
103
104    Bool_t       fITSmap[6];                      // ITS cluster map
105    Double_t     fITSchi2;                        // chi2 in ITS
106    Double_t     fITSsignal;                      // ITS signal used for PID
107    Double_t     fITSnsigma[AliPID::kSPECIES];    // number of sigmas ITS
108
109    Int_t        fTPCcount;                       // # TPC clusters
110    Double_t     fTPCchi2;                        // TPC chi 2
111    Double_t     fTPCsignal;                      // TPC dEdx signal
112    Double_t     fTPCnsigma[AliPID::kSPECIES];    // number of sigmas TPC for: e, mu, pi, K, p
113
114    Double_t     fTOFsignal;                      // TOF signal
115    Double_t     fTOFsigma[AliPID::kSPECIES];     // TOF sigma for: e, mu, pi, K, p
116    Double_t     fTOFref[AliPID::kSPECIES];       // expected times for: e, mu, pi, K, p
117
118    Double_t     fPsim[3];                        // simulated momentum
119    Double_t     fPrec[3];                        // reconstructed momentum
120    Double_t     fPtpc[3];                        // reconstructed momentum at the TPC inner wall
121
122    ClassDef(AliRsnMonitorTrack, 1)
123 };
124
125 #endif