Modified macros for phi analysis: improved pseudorapidity cut flexibility (A.Knospe)
[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       kTypes          // -- general limit ----------------------------------------------------------
38    };
39
40    AliRsnMiniValue(EType type = kTypes, Bool_t useMC = kFALSE);
41    AliRsnMiniValue(const AliRsnMiniValue &copy);
42    AliRsnMiniValue &operator=(const AliRsnMiniValue &copy);
43    virtual ~AliRsnMiniValue() { }
44
45    void               SetType(EType type)   {fType = type;}
46    EType              GetType()      const  {return fType;}
47    const char        *GetTypeName()  const  {return TypeName(fType);}
48    Bool_t             IsEventValue() const  {return (fType < kEventCuts);}
49
50    Float_t            Eval(AliRsnMiniPair *pair, AliRsnMiniEvent *event = 0x0);
51
52    static const char *TypeName(EType type);
53    static const char *ValueName(EType type, Bool_t useMC);
54
55 protected:
56
57    EType            fType;            //  type from enumeration
58    Bool_t           fUseMCInfo;       //  switch to use rec/sim momentum
59
60    ClassDef(AliRsnMiniValue, 1)       //  AliRsnMiniValue class
61 };
62
63 inline const char *AliRsnMiniValue::ValueName(EType type, Bool_t useMC)
64 {
65 //
66 // Define a criterion to name these object.
67 // They are not managed by the user, since each object is a singleton
68 //
69
70    if (useMC)
71       return Form("MC_%s", TypeName(type));
72    else
73       return TypeName(type);
74 }
75
76 #endif