]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/AliRsnPIDDefESD.h
fix for bug #70582 (change from L. Molnar)
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnPIDDefESD.h
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  * See cxx source for full Copyright notice                               *
4  **************************************************************************/
5
6 /* $Id: AliRsnPIDScheme.h,v 1.5 2007/02/21 14:33:25 pulvir Exp $ */
7
8 //-------------------------------------------------------------------------
9 //                      Class AliRsnPIDDef
10 //  Simple collection of reconstructed tracks, selected from an ESD event
11 //
12 // author: A. Pulvirenti             (email: alberto.pulvirenti@ct.infn.it)
13 //-------------------------------------------------------------------------
14
15 #ifndef ALIRSNPIDDEFESD_H
16 #define ALIRSNPIDDEFESD_H
17
18 class AliESDtrack;
19
20 class AliRsnPIDDefESD : public TObject
21 {
22   public:
23
24     enum EDetector {
25       kITS = 0,
26       kTPC,
27       kTRD,
28       kTOF,
29       kHMPID,
30       kDetectors
31     };
32
33     enum EScheme {
34       kSchemeESD = 0,
35       kSchemeITS,
36       kSchemeTPC,
37       kSchemeTOF,
38       kSchemeITSandTPC,
39       kSchemeITSandTOF,
40       kSchemeTPCandTOF,
41       kSchemeITSandTPCandTOF,
42       kSchemeITSandTPCandTOFwithSP,
43       kSchemeITSandTPCorTOFwithSP,
44       kSchemeLastPIDType
45     };
46
47     AliRsnPIDDefESD();
48     AliRsnPIDDefESD(const AliRsnPIDDefESD& copy);
49     virtual ~AliRsnPIDDefESD() {}
50
51     void        UseESDWeights() {fUseESDWeights = kTRUE;};
52     void        NoESDWeights() {fUseESDWeights = kFALSE;}
53     void        SetScheme(EScheme scheme, Double_t divValue = 1.0);
54     void        IncludeDet(EDetector det) {if (CheckBounds(det)) fUseDet[det] = kTRUE;}
55     void        ExcludeDet(EDetector det) {if (CheckBounds(det)) fUseDet[det] = kFALSE;}
56     void        IncludeAll() { Int_t det; for (det = 0; det < kDetectors; det++) fUseDet[det] = kTRUE; }
57     void        ExcludeAll() { Int_t det; for (det = 0; det < kDetectors; det++) fUseDet[det] = kFALSE; }
58     void        SetDivValue(EDetector det, Double_t value,Bool_t userHigher=kTRUE);
59     void        ComputeWeights(AliESDtrack *track, Double_t *weights);
60     void        PrintStatus();
61     const char* DetName(EDetector det) const;
62     const char* SchemeName();
63
64   private:
65
66     Bool_t   CheckBounds(EDetector det) const { return (det >= kITS && det < kDetectors); }
67     Bool_t   CheckDivValue(EDetector det,Double_t value);
68
69     Bool_t   fUseESDWeights;          // with this flag, ESD weights are used
70     Bool_t   fUseDet[kDetectors];     // flag to switch off info from a detector
71     Double_t fDivValue[kDetectors];   // division value for detector weight acceptance
72     Double_t fUseHigher[kDetectors];  // accepted higher or lower then div value
73
74     ClassDef(AliRsnPIDDefESD,1);
75 };
76
77 #endif