]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/muon/AliAnalysisTaskMuonTreeBuilder.h
Cleanup the code. Fix memory leak. Now inherit from AliAnalysisTaskSE (Antoine, Phili...
[u/mrichter/AliRoot.git] / PWG3 / muon / AliAnalysisTaskMuonTreeBuilder.h
1 #ifndef ALIANALYSISTASKMUONTREEBUILDER_H
2 #define ALIANALYSISTASKMUONTREEBUILDER_H
3
4 /* $Id$ */ 
5
6 #include "AliAnalysisTaskSE.h"
7 #include "TMath.h"
8
9 //      Analysis task for muon-dimuon analysis
10 //      Works for real and MC events
11 //      author: L. Bianchi - Universita' & INFN Torino
12
13 class TH1I;
14 class TParticle ;
15 class TLorentzVector ;
16 class TFile ;
17 class AliStack ;
18 class AliESDtrack;
19 class AliVParticle;
20 class AliMCParticle;
21 class AliMCEvent;
22
23
24 class AliAnalysisTaskMuonTreeBuilder : public AliAnalysisTaskSE {
25   public:
26
27   AliAnalysisTaskMuonTreeBuilder();
28   AliAnalysisTaskMuonTreeBuilder(const Char_t* name);
29   AliAnalysisTaskMuonTreeBuilder& operator= (const AliAnalysisTaskMuonTreeBuilder& c);
30   AliAnalysisTaskMuonTreeBuilder(const AliAnalysisTaskMuonTreeBuilder& c);
31   virtual ~AliAnalysisTaskMuonTreeBuilder();
32
33   // ANALYSIS FRAMEWORK STUFF to loop on data and fill output objects
34   void     UserExec(Option_t *option);
35   void     Terminate(Option_t *);
36   void     UserCreateOutputObjects();
37   
38
39   // Data types
40   void   SetIsMC     (Bool_t flagMC)    {fIsMC=flagMC;}
41   void   SetBeamEnergy   (Double_t en)          {fBeamEnergy=en;}
42   
43  protected:
44   
45   Double_t              fNevt            ;      // event counter
46   Double_t              fBeamEnergy      ;      // Energy of the beam (required for the CS angle)
47   TList                 *fOutput         ;      // output
48   TTree                 *fOutputTree     ;      //! tree output
49   
50   Bool_t        fIsMC;                          // if MC truth has to be read
51   
52   Bool_t        fIsSelected;                    // physics selection flag
53   char          fTrigClass[100];                // fired trigger classes
54
55   Int_t         fNumMuonTracks  ;               // muon tracks in the event
56   Int_t         fNumSPDTracklets;               // spd tracklets
57   Int_t         fNumContributors;               // n contributors
58   Double_t      fVertex[3];                     // x,y,z vertex
59   Double_t      fpT[10];                        // single mu pT
60   Double_t      fE[10];                         // single mu E
61   Double_t      fpx[10];                        // single mu px
62   Double_t      fpy[10];                        // single mu py
63   Double_t      fpz[10];                        // single mu pz
64   Double_t      fpxUncorr[10];                  // single mu px uncorrected
65   Double_t      fpyUncorr[10];                  // single mu py uncorrected
66   Double_t      fpzUncorr[10];                  // single mu pz uncorrected
67   Double_t      fy[10];                         // single mu y
68   Double_t      feta[10];                       // single mu eta
69   Double_t      fphi[10];                       // single mu phi
70   Int_t         fMatchTrig[10];                 // single mu match trigger
71   Double_t      fTrackChi2[10];                 // single mu chi2 track
72   Double_t      fMatchTrigChi2[10];             // single mu chi2 of match trigger
73   Double_t      fDCA[10];                       // single mu DCA
74   Short_t       fCharge[10];                    // single mu charge
75   Int_t         fMuFamily[10];                  // single mu provenience
76   Double_t      fRAtAbsEnd[10];                 // single mu distance from beam center at end abs
77
78   Int_t         fNumDimuons;                    // dimuons in the event
79   Int_t         fDimuonConstituent[45][2];      // reference to single mus
80   Double_t      fpTdimuon[45];                  // dimuon pT
81   Double_t      fpxdimuon[45];                  // dimuon px
82   Double_t      fpydimuon[45];                  // dimuon py
83   Double_t      fpzdimuon[45];                  // dimuon pz
84   Double_t      fydimuon[45];                   // dimuon y
85   Double_t      fiMassdimuon[45];               // dimuon invariant mass
86   Double_t      fcostCS[45];                    // dimuon cos theta Collins-Soper
87   Double_t      fcostHE[45];                    // dimuon cos theta Helicity
88   Double_t      fphiCS[45];                     // dimuon phi Collins-Soper
89   Double_t      fphiHE[45];                     // dimuon phi Helicity
90   
91   //Int_t               fIsPrimary[10];
92   Int_t         fPDG[10];                       // PDG single mu
93   Int_t         fPDGmother[10];                 // PDG mother single mu
94   Int_t         fPDGdimu[45];                   // PDG dimu
95
96
97
98   
99   
100   Int_t   FindDimuFamily(AliMCParticle* mcTrack1,AliMCParticle* mcTrack2, AliMCEvent* mcEvent) const;
101   Int_t   FindMuFamily(AliMCParticle* mcTrack, AliMCEvent* mcEvent) const;
102   Double_t Imass  (Double_t e1, Double_t px1, Double_t py1, Double_t pz1, Double_t e2, Double_t px2, Double_t py2, Double_t pz2) const;
103   Double_t Rap    (Double_t e, Double_t pz) const;
104   Double_t Phideg(Double_t phi) const;
105   
106   Double_t CostCS (Double_t px1, Double_t py1, Double_t pz1, Double_t e1, Double_t charge1, Double_t px2, Double_t py2, Double_t pz2, Double_t e2);
107   Double_t CostHE (Double_t px1, Double_t py1, Double_t pz1, Double_t e1, Double_t charge1, Double_t px2, Double_t py2, Double_t pz2, Double_t e2);
108   Double_t PhiCS  (Double_t px1, Double_t py1, Double_t pz1, Double_t e1, Double_t charge1, Double_t px2, Double_t py2, Double_t pz2, Double_t e2);
109   Double_t PhiHE  (Double_t px1, Double_t py1, Double_t pz1, Double_t e1, Double_t charge1, Double_t px2, Double_t py2, Double_t pz2, Double_t e2);
110   
111   ClassDef(AliAnalysisTaskMuonTreeBuilder,1);
112 };
113
114 #endif