]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/AliRsnMiniValue.h
Final TOF DAs
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / AliRsnMiniValue.h
1 #ifndef ALIRSNMINIVALUE_H
2 #define ALIRSNMINIVALUE_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 ////////////////////////////////////////////////////////////////////////////////
8 //
9 //  Values which depend on 4-momentum of the pair.
10 //
11 ////////////////////////////////////////////////////////////////////////////////
12
13 class AliRsnMiniPair;
14 class AliRsnMiniEvent;
15
16 class AliRsnMiniValue : public TNamed {
17 public:
18
19    enum EType {
20       kVz,            // event Z position of primary vertex
21       kMult,          // event multiplicity or centrality (depends on task settings)
22       kTracklets,     // event tracklets
23       kPlaneAngle,    // event reaction plane angle
24       kLeadingPt,     // event leading particle momentum
25       kEventCuts,     // -- limit of event cuts ----------------------------------------------------
26       kPt,            // pair transverse momentum
27       kPz,            // pair longitudinal momentum
28       kInvMass,       // pair invariant mass (with reconstructed momenta)
29       kInvMassRes,    // pair invariant mass resolution
30       kInvMassDiff,   // pair invariant mass difference (MC - reconstructed)
31       kEta,           // pair pseudo-rapidity
32       kMt,            // pair transverse mass (need a reference mass)
33       kY,             // pair rapidity (need a reference mass)
34       kPtRatio,       // ratio |pt1 - pt2|/(pt1 + pt2) of daughter transverse momenta
35       kDipAngle,      // inverse cosine of the angle between daughter vector momenta
36       kCosThetaStar,  // polarization angle
37       kAngleLeading,  // angle to leading particle
38       kFirstDaughterPt,  //pt of the first daughter of the pair
39       kSecondDaughterPt, //pt of the second daughter of the pair
40       kFirstDaughterP,   //p of the first daughter of the pair
41       kSecondDaughterP,  //p of the second daughter of the pair
42       kDCAproduct,    // product of the daughter's dca to PV (same in AliRsnValuePair)
43       kFirstDaughterDCA,  //DCA to PV of the first daughter of the pair
44       kSecondDaughterDCA, //DCA to PV of the second daughter of the pair
45       kNSisters,    // number of daughters (only for MC)
46       kTypes          // -- general limit ----------------------------------------------------------
47    };
48
49    AliRsnMiniValue(EType type = kTypes, Bool_t useMC = kFALSE);
50    AliRsnMiniValue(const AliRsnMiniValue &copy);
51    AliRsnMiniValue &operator=(const AliRsnMiniValue &copy);
52    virtual ~AliRsnMiniValue() { }
53
54    void               SetType(EType type)   {fType = type;}
55    EType              GetType()      const  {return fType;}
56    const char        *GetTypeName()  const  {return TypeName(fType);}
57    Bool_t             IsEventValue() const  {return (fType < kEventCuts);}
58
59    Float_t            Eval(AliRsnMiniPair *pair, AliRsnMiniEvent *event = 0x0);
60
61    static const char *TypeName(EType type);
62    static const char *ValueName(EType type, Bool_t useMC);
63
64 protected:
65
66    EType            fType;            //  type from enumeration
67    Bool_t           fUseMCInfo;       //  switch to use rec/sim momentum
68
69    ClassDef(AliRsnMiniValue, 1)       //  AliRsnMiniValue class
70 };
71
72 inline const char *AliRsnMiniValue::ValueName(EType type, Bool_t useMC)
73 {
74 //
75 // Define a criterion to name these object.
76 // They are not managed by the user, since each object is a singleton
77 //
78
79    if (useMC)
80       return Form("MC_%s", TypeName(type));
81    else
82       return TypeName(type);
83 }
84
85 #endif