]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/AliRsnMiniValue.h
018493841912f0cb056c6ae5a4ca42874cf73998
[u/mrichter/AliRoot.git] / PWG2 / 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       kEta,           // pair pseudo-rapidity
30       kMt,            // pair transverse mass (need a reference mass)
31       kY,             // pair rapidity (need a reference mass)
32       kPtRatio,       // ratio |pt1 - pt2|/(pt1 + pt2) of daughter transverse momenta
33       kDipAngle,      // inverse cosine of the angle between daughter vector momenta
34       kCosThetaStar,  // polarization angle
35       kAngleLeading,  // angle to leading particle
36       kTypes          // -- general limit ----------------------------------------------------------
37    };
38
39    AliRsnMiniValue(EType type = kTypes, Bool_t useMC = kFALSE);
40    AliRsnMiniValue(const AliRsnMiniValue& copy);
41    AliRsnMiniValue& operator=(const AliRsnMiniValue& copy);
42    virtual ~AliRsnMiniValue() { }
43
44    void               SetType(EType type)   {fType = type;}
45    EType              GetType()      const  {return fType;}
46    const char*        GetTypeName()  const  {return TypeName(fType);}
47    Bool_t             IsEventValue() const  {return (fType < kEventCuts);}
48    
49    Float_t            Eval(AliRsnMiniPair *pair, AliRsnMiniEvent *event = 0x0);
50    
51    static const char* TypeName(EType type);
52    static const char* ValueName(EType type, Bool_t useMC);
53
54 protected:
55
56    EType            fType;            //  type from enumeration
57    Bool_t           fUseMCInfo;       //  switch to use rec/sim momentum
58                                        
59    ClassDef(AliRsnMiniValue, 1)       //  AliRsnMiniValue class
60 };
61
62 inline const char* AliRsnMiniValue::ValueName(EType type, Bool_t useMC)
63 {
64 //
65 // Define a criterion to name these object.
66 // They are not managed by the user, since each object is a singleton
67 //
68
69    if (useMC) 
70       return Form("MC_%s", TypeName(type));
71    else
72       return TypeName(type);
73 }
74
75 #endif