]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/AliRsnMiniValue.h
Added new class for D0 daughter cuts (Massimo)
[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       kPlaneAngle,    // event reaction plane angle
23       kLeadingPt,     // event leading particle momentum
24       kEventCuts,     // -- limit of event cuts ----------------------------------------------------
25       kPt,            // pair transverse momentum
26       kPz,            // pair longitudinal momentum
27       kInvMass,       // pair invariant mass (with reconstructed momenta)
28       kInvMassRes,    // pair invariant mass resolution
29       kInvMassDiff,   // pair invariant mass difference (MC - reconstructed)
30       kEta,           // pair pseudo-rapidity
31       kMt,            // pair transverse mass (need a reference mass)
32       kY,             // pair rapidity (need a reference mass)
33       kPtRatio,       // ratio |pt1 - pt2|/(pt1 + pt2) of daughter transverse momenta
34       kDipAngle,      // inverse cosine of the angle between daughter vector momenta
35       kCosThetaStar,  // polarization angle
36       kAngleLeading,  // angle to leading particle
37       kFirstDaughterPt,  //pt of the first daughter of the pair
38       kSecondDaughterPt, //pt of the second daughter of the pair
39       kFirstDaughterP,   //p of the first daughter of the pair
40       kSecondDaughterP,  //p of the second daughter of the pair
41       kDCAproduct,    // product of the daughter's dca to PV (same in AliRsnValuePair)
42       kFirstDaughterDCA,  //DCA to PV of the first daughter of the pair
43       kSecondDaughterDCA, //DCA to PV of the second daughter of the pair
44       kTypes          // -- general limit ----------------------------------------------------------
45    };
46
47    AliRsnMiniValue(EType type = kTypes, Bool_t useMC = kFALSE);
48    AliRsnMiniValue(const AliRsnMiniValue &copy);
49    AliRsnMiniValue &operator=(const AliRsnMiniValue &copy);
50    virtual ~AliRsnMiniValue() { }
51
52    void               SetType(EType type)   {fType = type;}
53    EType              GetType()      const  {return fType;}
54    const char        *GetTypeName()  const  {return TypeName(fType);}
55    Bool_t             IsEventValue() const  {return (fType < kEventCuts);}
56
57    Float_t            Eval(AliRsnMiniPair *pair, AliRsnMiniEvent *event = 0x0);
58
59    static const char *TypeName(EType type);
60    static const char *ValueName(EType type, Bool_t useMC);
61
62 protected:
63
64    EType            fType;            //  type from enumeration
65    Bool_t           fUseMCInfo;       //  switch to use rec/sim momentum
66
67    ClassDef(AliRsnMiniValue, 1)       //  AliRsnMiniValue class
68 };
69
70 inline const char *AliRsnMiniValue::ValueName(EType type, Bool_t useMC)
71 {
72 //
73 // Define a criterion to name these object.
74 // They are not managed by the user, since each object is a singleton
75 //
76
77    if (useMC)
78       return Form("MC_%s", TypeName(type));
79    else
80       return TypeName(type);
81 }
82
83 #endif