]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/FlavourJetTasks/AliPicoV0Base.h
method Destroy added to AliGeomManager for clean removal of geometry
[u/mrichter/AliRoot.git] / PWGJE / FlavourJetTasks / AliPicoV0Base.h
1 #ifndef ALIPICOV0BASE_H
2 #define ALIPICOV0BASE_H
3
4 #include <TObject.h>
5 #include <TVector3.h>
6
7 #include "AliPicoHeaderCJ.h"
8
9 class TH2D;
10 class TLorentzVector;
11
12 class AliPicoV0Base : public TObject {
13
14  public :
15
16   AliPicoV0Base();
17   AliPicoV0Base(UInt_t   wMask,
18                 Double_t dV0Radius,
19                 Double_t dV0CosPA,
20                 Double_t dV0DistToPVoverP,
21                 Double_t dDausDCA,
22                 Double_t dPosDCAtoPV,
23                 Double_t dNegDCAtoPV,
24                 Float_t  dDauXrowsTPC,
25                 Double_t dDauXrowsOverFindableClusTPC,
26                 Double_t dPosPx, Double_t dPosPy, Double_t dPosPz,
27                 Double_t dNegPx, Double_t dNegPy, Double_t dNegPz,
28                 Bool_t   bPosInJC, Bool_t   bNegInJC);
29   AliPicoV0Base(const AliPicoV0Base &src);
30   AliPicoV0Base& operator=(const AliPicoV0Base &src);
31   virtual ~AliPicoV0Base();
32 //=============================================================================
33
34   TVector3 KinePos() const { return  fP3Pos; }
35   TVector3 KineNeg() const { return  fP3Neg; }
36   TVector3 KineRD()  const { return (fP3Pos + fP3Neg); }
37
38   TLorentzVector KineKshort();
39   TLorentzVector KineLambda();
40   TLorentzVector KineAntiLa();
41
42   Double_t RapidityKa();
43   Double_t RapidityLa();
44 //=============================================================================
45
46   Bool_t IsKshort() const { return ((fMask & AliPicoHeaderCJ::kKshort)     == AliPicoHeaderCJ::kKshort);     }
47   Bool_t IsLambda() const { return ((fMask & AliPicoHeaderCJ::kLambda)     == AliPicoHeaderCJ::kLambda);     }
48   Bool_t IsAntiLa() const { return ((fMask & AliPicoHeaderCJ::kAntiLambda) == AliPicoHeaderCJ::kAntiLambda); }
49
50   Bool_t IsKaInRapAcc(Double_t dMin, Double_t dMax);
51   Bool_t IsLaInRapAcc(Double_t dMin, Double_t dMax);
52   Bool_t IsV0InEtaAcc(Double_t dMin, Double_t dMax);
53   Bool_t IsDausInEtaAcc(Double_t dMin, Double_t dMax);
54
55   Bool_t IsPosInJC() const { return  fIsPosInJC; }
56   Bool_t IsNegInJC() const { return  fIsNegInJC; }
57   Bool_t IsTwoInJC() const { return (fIsPosInJC && fIsNegInJC); }
58   Bool_t IsOneInJC() const { return (fIsPosInJC || fIsNegInJC); }
59
60   void FillKshortPtInvM(TH2D *h);
61   void FillLambdaPtInvM(TH2D *h);
62   void FillAntiLaPtInvM(TH2D *h);
63 //=============================================================================
64
65  protected :
66
67   Bool_t IsKa(Double_t dCutMinV0Radius                    = 0.5,
68               Double_t dCutMinV0CosPA                     = 0.97,
69               Double_t dCutMaxV0Ctau                      = 20.,
70               Double_t dCutMaxDausDCA                     = 1.,
71               Double_t dCutMinPosDCAtoPV                  = 0.06,
72               Double_t dCutMinNegDCAtoPV                  = 0.06,
73               Float_t  dCutMinDauXrowsTPC                 = 70.,
74               Double_t dCutMinDauXrowsOverFindableClusTPC = 0.8,
75               Double_t dCutMinDauDeltaM                   = 0.005);
76
77   Bool_t IsLa(Double_t dCutMinV0Radius                    = 0.5,
78               Double_t dCutMinV0CosPA                     = 0.995,
79               Double_t dCutMaxV0Ctau                      = 30.,
80               Double_t dCutMaxDausDCA                     = 1.,
81               Double_t dCutMinPosDCAtoPV                  = 0.06,
82               Double_t dCutMinNegDCAtoPV                  = 0.06,
83               Float_t  dCutMinDauXrowsTPC                 = 70.,
84               Double_t dCutMinDauXrowsOverFindableClusTPC = 0.8,
85               Double_t dCutMinDauDeltaM                   = 0.01);
86
87   Bool_t IsCandidateSelected(Double_t dCutMinV0Radius,
88                              Double_t dCutMinV0CosPA,
89                              Double_t dCutMaxDausDCA,
90                              Double_t dCutMinPosDCAtoPV,
91                              Double_t dCutMinNegDCAtoPV,
92                              Float_t  dCutMinDauXrowsTPC,
93                              Double_t dCutMinDauXrowsOverFindableClusTPC);
94
95   Bool_t IsKaSelected(Double_t dCutMaxV0Ctau, Double_t dCutMinDauDeltaM);
96   Bool_t IsLaSelected(Double_t dCutMaxV0Ctau, Double_t dCutMinDauDeltaM);
97 //=============================================================================
98
99   UInt_t fMask;  //
100
101   Double_t fV0Radius;  //
102   Double_t fV0CosPA;  //
103   Double_t fV0DistToPVoverP;  //
104
105   Double_t fDausDCA;  //
106
107   Double_t fPosDCAtoPV;  //
108   Double_t fNegDCAtoPV;  //
109
110   Float_t  fDauXrowsTPC;  //
111   Double_t fDauXrowsOverFindableClusTPC;  //
112
113   TVector3 fP3Pos;  //
114   TVector3 fP3Neg;  //
115
116   Bool_t fIsPosInJC;  // match w/ jet consti
117   Bool_t fIsNegInJC;  // match w/ jet consti
118
119   static const Double_t fgkMassPion;    //
120   static const Double_t fgkMassKshort;  //
121   static const Double_t fgkMassLambda;  //
122   static const Double_t fgkMassProton;  //
123
124   ClassDef(AliPicoV0Base, 3)
125 };
126
127 #endif