fix mem leak and compiler warning
[u/mrichter/AliRoot.git] / ANALYSIS / AliAnalysis.h
1 #ifndef ALIANALYSIS_H
2 #define ALIANALYSIS_H
3 //________________________________
4 ///////////////////////////////////////////////////////////
5 //
6 // class AliAnalysis
7 //
8 // Base class for analysis
9 //
10 //
11 // Piotr.Skowronski@cern.ch
12 //
13 ///////////////////////////////////////////////////////////
14
15 #include <TTask.h>
16 #include <AliAODParticleCut.h>
17 #include <AliAODPairCut.h>
18
19 class AliAOD;
20 class AliStack;
21 class AliEventCut;
22 class AliVAODParticle;
23 class AliAODPair;
24  
25 class AliAnalysis: public TTask
26 {
27   public: 
28     AliAnalysis();
29     AliAnalysis(const char* name,const char* title);
30     virtual ~AliAnalysis();
31     
32     virtual Int_t Init() = 0;
33     virtual Int_t ProcessEvent(AliAOD* aodrec, AliAOD* aodsim = 0x0) = 0;
34     virtual Int_t Finish() = 0;
35
36     void          SetCutsOnRec();
37     void          SetCutsOnSim();
38     void          SetCutsOnRecAndSim();
39     
40     void          SetEventCut(AliEventCut* evcut);
41     void          SetPairCut(AliAODPairCut* cut);
42     
43   protected:
44     Bool_t        Rejected(AliAOD* recevent, AliAOD* simevent);
45     AliEventCut*  fEventCut;//event cut
46
47     Bool_t        fCutOnSim;//flag indicating that event cut is performed on simulated particles 
48     Bool_t        fCutOnRec;//flag indicating that event cut is performed on reconstructed tracks
49
50     AliAODPairCut*   fPairCut;// Pair cut applied for all mixed particles
51
52     /**********************************************/
53     /*                C U T S                     */
54     /**********************************************/
55
56     Bool_t (AliAnalysis::*fkPass)(AliAODPair* partpair, AliAODPair* trackpair) const;//Pointer to function that performes pair cut
57     Bool_t (AliAnalysis::*fkPass1)(AliVAODParticle* partpair, AliVAODParticle* trackpair) const;//Pointer to function that performes cut on first particle
58     Bool_t (AliAnalysis::*fkPass2)(AliVAODParticle* partpair, AliVAODParticle* trackpair) const;//Pointer to function that performes cut on second particle
59     Bool_t (AliAnalysis::*fkPassPairProp)(AliAODPair* partpair, AliAODPair* trackpair) const;//Pointer to function that performes pair cut
60
61     Bool_t PassPartAndTrack (AliAODPair* partpair, AliAODPair* trackpair) const {return (fPairCut->Rejected((AliAODPair*)partpair))?kTRUE:fPairCut->Rejected((AliAODPair*)trackpair);}
62     Bool_t PassPartAndTrack1(AliVAODParticle* part, AliVAODParticle* track) const;
63     Bool_t PassPartAndTrack2(AliVAODParticle* part, AliVAODParticle* track) const;
64     Bool_t PassPairPropPartAndTrack (AliAODPair* partpair, AliAODPair* trackpair) const {return (fPairCut->PassPairProp((AliAODPair*)partpair))?kTRUE:fPairCut->PassPairProp((AliAODPair*)trackpair);}
65
66     Bool_t PassPart (AliAODPair* partpair, AliAODPair* /*trackpair*/) const {return fPairCut->Rejected((AliAODPair*)partpair);}
67     Bool_t PassPart1(AliVAODParticle* part, AliVAODParticle* /*track*/) const {return fPairCut->GetFirstPartCut()->Rejected(part);}
68     Bool_t PassPart2(AliVAODParticle* part, AliVAODParticle* /*track*/) const {return fPairCut->GetSecondPartCut()->Rejected(part);}
69     Bool_t PassPairPropPart (AliAODPair* partpair, AliAODPair* /*trackpair*/) const {return fPairCut->PassPairProp((AliAODPair*)partpair);}
70
71     Bool_t PassTrack (AliAODPair* /*partpair*/, AliAODPair* trackpair) const {return fPairCut->Rejected((AliAODPair*)trackpair);}
72     Bool_t PassTrack1(AliVAODParticle* /*part*/, AliVAODParticle* track) const {return fPairCut->GetFirstPartCut()->Rejected(track);}
73     Bool_t PassTrack2(AliVAODParticle* /*part*/, AliVAODParticle* track) const {return fPairCut->GetSecondPartCut()->Rejected(track);}
74     Bool_t PassPairPropTrack (AliAODPair* /*partpair*/, AliAODPair* trackpair) const {return fPairCut->PassPairProp((AliAODPair*)trackpair);}
75
76     AliAnalysis(const AliAnalysis&); 
77
78   private:
79     AliAnalysis& operator=(const AliAnalysis&); // Not implemented
80
81     ClassDef(AliAnalysis,1)
82 };
83
84
85 inline Bool_t AliAnalysis::PassPartAndTrack1(AliVAODParticle* part,AliVAODParticle* track) const
86 {
87 //Checks first particle from both, particle and track pairs
88   AliAODParticleCut* pc = fPairCut->GetFirstPartCut();
89   return (pc->Rejected(part))?kTRUE:pc->Rejected(track);
90 }
91 /*************************************************************************************/
92
93 inline Bool_t AliAnalysis::PassPartAndTrack2(AliVAODParticle* part,AliVAODParticle* track) const
94 {
95 //Checks second particle from both, particle and track pairs
96   AliAODParticleCut* pc = fPairCut->GetSecondPartCut();
97   return (pc->Rejected(part))?kTRUE:pc->Rejected(track);
98 }
99 /*************************************************************************************/ 
100
101 #endif