]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/totEt/AliAnalysisEtSelector.h
Cleaning up streamers
[u/mrichter/AliRoot.git] / PWGLF / totEt / AliAnalysisEtSelector.h
1 #ifndef ALIANALYSISETSELECTOR_H
2 #define ALIANALYSISETSELECTOR_H
3 //_________________________________________________________________________
4 //  Utility Class for transverse energy studies
5 //  Selector Base class
6 //  -  
7 //
8 //*-- Authors: Oystein Djuvsland (Bergen)
9 //_________________________________________________________________________
10 #include <Rtypes.h>
11 #include "AliAnalysisEtCommon.h"
12 #include "AliESDEvent.h"
13
14 class AliESDCaloCluster;
15 class AliVTrack;
16 class TRefArray;
17 class AliAnalysisEtCuts;
18 class TParticle;
19 class TParticlePDG;
20 class AliStack;
21
22 class AliAnalysisEtSelector : public AliAnalysisEtCommon
23 {
24
25 public:
26   
27     // Constructor takes cuts object
28     AliAnalysisEtSelector(AliAnalysisEtCuts *cuts);
29     AliAnalysisEtSelector();
30     
31     // Destructor 
32     virtual ~AliAnalysisEtSelector();
33     
34     // Set the current event
35     virtual void SetEvent(const AliESDEvent *event);
36     
37     // Init
38     virtual void Init() {} 
39     
40     // Init with event
41     virtual Int_t Init(const AliESDEvent *event) { fRunNumber = event->GetRunNumber(); return 0; }
42     
43     // Return CaloClusters for the detector
44     virtual TRefArray* GetClusters() { return 0; }
45
46     virtual Float_t ShiftAngle(Float_t phi);//Always returns an angle in radians between -pi<phi<pi
47     
48     // Return true if cluster has energy > cut
49     virtual Bool_t PassMinEnergyCut(const AliESDCaloCluster &/*cluster*/) const { return true; }
50     
51     // Return true if cluster has energy > cut
52     virtual Bool_t PassMinEnergyCut(const TParticle &/*part*/) const { return true; }
53
54     virtual Bool_t PassMinEnergyCut(Double_t e) const;
55     
56     // Cut on distance to bad channel
57     virtual Bool_t PassDistanceToBadChannelCut(const AliESDCaloCluster &/*cluster*/) const { return true; }
58     
59     // Cut on track matching
60     virtual Bool_t PassTrackMatchingCut(const AliESDCaloCluster &/*cluster*/) const { return true; }
61     
62     // Cut on neutral monte carlo particle
63     virtual Bool_t IsNeutralMcParticle(Int_t pIdx, AliStack& s, const TParticlePDG& pdg) const;
64     
65     // Is it an EM E_T particle
66     virtual Bool_t IsEmEtParticle(const Int_t pdgCode) const;
67     
68     // Does the particle come from an EM E_T primary ?
69     virtual Bool_t PrimaryIsEmEtParticle(const Int_t pIdx, AliStack &stack) const;
70
71     // Get the index of primary particle for the particle
72     Int_t GetPrimary(const Int_t partIdx, AliStack &stack) const;
73     
74     // Cut on geometrical acceptance 
75     virtual Bool_t CutGeometricalAcceptance(const TParticle &/*part*/) { return true; }
76     
77     // Cut on geometrical acceptance 
78     virtual Bool_t CutGeometricalAcceptance(const AliVTrack &/*part*/) { return true; }
79     
80     // Cut on geometrical acceptance 
81     virtual Bool_t CutGeometricalAcceptance(const AliESDCaloCluster &/*part*/) { return true; }
82     
83     // From secondary vertex?
84     //virtual Bool_t FromSecondaryInteraction(const TParticle& part, AliStack& stack) const;
85     virtual Bool_t FromSecondaryInteraction(Int_t partID, AliStack& stack) const;
86
87     Int_t GetMother(Int_t partID, AliStack& stack) const;
88     Bool_t IsFromDetectorCover(Int_t partID, AliStack& stack) const;
89     Int_t GetFirstMotherNotFromDetectorCover(Int_t partID, AliStack& stack) const;
90     
91     // Cluster is in correct detector
92     virtual Bool_t IsDetectorCluster(const AliESDCaloCluster &cluster) const = 0;
93
94     // Get correct cluster label - PHOS needs different method
95     virtual UInt_t GetLabel(const AliESDCaloCluster *cluster, AliStack *stack){if(!stack){return 0;}else{return TMath::Abs(cluster->GetLabel());}}
96     
97 protected:
98   
99     const AliVEvent *fEvent; // Pointer to current event
100
101     TRefArray *fClusterArray; // Array of clusters
102
103     AliAnalysisEtCuts *fCuts; // Pointer to the cuts object; DS: also in base class?
104     
105     Bool_t SuspiciousDecayInChain(const UInt_t suspectMotherPdg, const UInt_t suspectDaughterPdg, const TParticle& part, AliStack& stack) const;
106     
107     Int_t fRunNumber;
108
109     Bool_t fInitialized; // matrix initialized
110
111 private:
112
113     //AliAnalysisEtSelector(); // Prohibited
114     AliAnalysisEtSelector(const AliAnalysisEtSelector& other);// Prohibited
115     AliAnalysisEtSelector& operator=(const AliAnalysisEtSelector& other);// Prohibited
116     bool operator==(const AliAnalysisEtSelector& other) const;// Prohibited
117     
118     ClassDef(AliAnalysisEtSelector, 1);
119 };
120
121 #endif // ALIANALYSISETSELECTOR_H