New classes required for revision of package
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnCutBetheBloch.h
1 //
2 // Class AliRsnCutRange
3 //
4 // General implementation of cuts which check a value inside a range.
5 // This range can be defined by two integers or two doubles.
6 // A user-friendly enumeration allows to define what is checked.
7 //
8 // authors: Martin Vala (martin.vala@cern.ch)
9 //          Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
10 //
11
12 #ifndef ALIRSNCUTBETHEBLOCK_H
13 #define ALIRSNCUTBETHEBLOCK_H
14
15 #include "AliPID.h"
16 #include "AliRsnCut.h"
17
18 class AliRsnCutBetheBloch : public AliRsnCut
19 {
20  public:
21
22   AliRsnCutBetheBloch();
23   AliRsnCutBetheBloch(const char *name, Double_t fractionRange, Double_t mass, Double_t mip = 50.0, Bool_t correct = kTRUE);
24   AliRsnCutBetheBloch(const char *name, Double_t fractionRange, AliPID::EParticleType type, Double_t mip = 50.0, Bool_t correct = kTRUE);
25
26   void           SetMass(Double_t mass) {fMass = mass;}
27   void           SetMass(AliPID::EParticleType type) {AliPID pid; fMass = pid.ParticleMass(type);}
28   void           SetMIP(Double_t mip) {fMIP = mip;}
29   void           SetCalibConstant(Int_t i, Double_t value) {if (i>=0&&i<5) fConst[i] = value;}
30   Double_t       BetheBloch(AliRsnDaughter *track);
31
32   virtual Bool_t IsSelected(ETarget tgt, AliRsnDaughter *daughter);
33   virtual Bool_t IsSelected(ETarget tgt, AliRsnPairParticle *pair);
34   virtual Bool_t IsSelected(ETarget tgt, AliRsnEvent *event);
35   virtual Bool_t IsSelected(ETarget tgt, AliRsnEvent *ev1, AliRsnEvent *ev2);
36
37 protected:
38
39   Bool_t   fCorrect;   // apply or not the saturation corrections
40   Double_t fMass;      // mass hypothesis
41   Double_t fMIP;       // MIP normalization
42   Double_t fConst[5];  // calibration constants
43
44   ClassDef(AliRsnCutBetheBloch, 1)
45 };
46
47 #endif