]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/muon/AliAnalysisTaskDimuonCFContainerBuilder.h
Fixes for bug #77230: PWG3 par files
[u/mrichter/AliRoot.git] / PWG3 / muon / AliAnalysisTaskDimuonCFContainerBuilder.h
1 #ifndef ALIANALYSISTASKDIMUONCFCONTAINERBUILDER_H
2 #define ALIANALYSISTASKDIMUONCFCONTAINERBUILDER_H
3
4 #include "AliAnalysisTaskSE.h"
5 #include "TString.h"
6
7 //      Analysis task for the building of a dimuon CF container
8 //      Also some single-muon variables are stored
9 //      L. Bianchi - Universita' & INFN Torino
10
11 class AliCFContainer;
12 class AliCFManager;
13
14 class AliAnalysisTaskDimuonCFContainerBuilder : public AliAnalysisTaskSE {
15   public:
16
17   AliAnalysisTaskDimuonCFContainerBuilder();
18   AliAnalysisTaskDimuonCFContainerBuilder(const Char_t* name, Bool_t readaod, Bool_t readMC, Bool_t isaccept, Double_t beamEn);
19   AliAnalysisTaskDimuonCFContainerBuilder& operator= (const AliAnalysisTaskDimuonCFContainerBuilder& c);
20   AliAnalysisTaskDimuonCFContainerBuilder(const AliAnalysisTaskDimuonCFContainerBuilder& c);
21   virtual ~AliAnalysisTaskDimuonCFContainerBuilder();
22
23   // ANALYSIS FRAMEWORK STUFF to loop on data and fill output objects
24   void     UserExec(Option_t *option);
25   void     Terminate(Option_t *);
26   void     UserCreateOutputObjects();
27   
28   // CORRECTION FRAMEWORK RELATED FUNCTIONS
29   void           SetCFManager(AliCFManager* const io) {fCFManager = io;}   // global correction manager
30   AliCFManager * GetCFManager() const {return fCFManager;}           // get corr manager
31   void           SetQAList(TList* const list) {fQAHistList = list;}
32
33   // Setters and Getters
34   Bool_t IsReadAODData   ()                     const {return fReadAODData;}
35   void   SetReadAODData         (Bool_t flag=kTRUE)       {fReadAODData=flag;}
36   void   SetReadMCinfo          (Bool_t flag=kTRUE)       {fReadMCInfo=flag;}
37   void   SetIsAccProd           (Bool_t flag=kTRUE)       {fIsAccProduction=flag;}
38   void   SetBeamEnergy          (Double_t en)             {fBeamEnergy=en;}
39   void   SetChi2Limits          (Double_t chi2track[])    {fChi2Track[0]=chi2track[0];fChi2Track[1]=chi2track[1];}
40   void   SetChi2MatchLimits     (Double_t chi2match[])    {fChi2MatchTrig[0]=chi2match[0];fChi2MatchTrig[1]=chi2match[1];}
41   void   SetPtSingMuLimits      (Double_t PtSingle[])     {fPtSingMuCut[0]=PtSingle[0];fPtSingMuCut[1]=PtSingle[1];}
42   void   SetThetaSingMuLimits   (Double_t ThetaSingle[])  {fThetaSingMuCut[0]=ThetaSingle[0];fThetaSingMuCut[1]=ThetaSingle[1];}
43   void   SetZprimVertLimits     (Double_t Zprimvtx[])     {fzPrimVertexSPD[0]=Zprimvtx[0];fzPrimVertexSPD[1]=Zprimvtx[1];}
44   void   SetCutonZvtxSPD        (Bool_t   cut=kFALSE)     {fCutOnzVtxSPD=cut;}
45   void   SetNContributorsLimits (Double_t NContr[])       {fNContributors[0]=NContr[0];fNContributors[1]=NContr[1];}
46   void   SetCutonNContributors  (Bool_t   cut=kFALSE)     {fCutOnNContributors=cut;}
47   void   SetDistinguishTrigClass(Bool_t   dist=kFALSE)    {fDistinguishTrigClass=dist;}
48   void   SetTrigClassMuonName   (TString name = "CMU")    {fTrigClassMuon=name;}
49   void   SetTrigClassInteracName(TString name = "CINT")   {fTrigClassInteraction=name;}
50   void   SetTrigClassMuonSideName(TString name[4])        {for(Int_t i=0;i<4;i++) fTrigClassMuonSide[i]=name[i];}
51   void   SetTrigClassInteracSideName(TString name[4])     {for(Int_t i=0;i<4;i++) fTrigClassInteractionSide[i]=name[i];}
52  
53  protected:
54   
55   Bool_t                fReadAODData            ;    // flag for AOD/ESD input files
56   Bool_t                fReadMCInfo             ;    // flag for reading MC info (ESD->Kinematics, AOD->MCbranch)
57   Bool_t                fIsAccProduction        ;    // flag to activate in case of acceptance MC production (in this case fReadMCInfo==kTRUE)
58   AliCFManager          *fCFManager             ;    // pointer to the CF manager
59   TList                 *fQAHistList            ;    // list of QA histograms
60   Double_t              fNevt                   ;    // event counter
61   Double_t              fBeamEnergy             ;    // Energy of the beam (required for the CS angle)
62   TList                 *fOutput                ;    // list of TH in output
63   
64                                                      // CUTS ON TRACKS
65   Double_t              fChi2Track[2]           ;    // Cut on chi2 of the tracks ([0]==chi2min, [1]==chi2max)
66   Double_t              fChi2MatchTrig[2]       ;    // Cut on chi2matchtrigger of the tracks ([0]==chi2Matchmin, [1]==chi2Matchmax)
67   Double_t              fPtSingMuCut[2]         ;    // Cut on pt of single-mu tracks ([0]==ptmin, [1]==ptmax)
68   Double_t              fThetaSingMuCut[2]      ;    // Cut on polar angle (wrt beam axis) of single-mu tracks ([0]==thetamin, [1]==thetamax)
69
70                                                      // CUTS ON EVENT
71   Double_t              fzPrimVertexSPD[2]      ;    // Cut on the z coordinate of the primary vertex in SPD (full ITS for AODs)
72   Bool_t                fCutOnzVtxSPD           ;    // flag to activate the cut on the z of the primary vertex
73   Int_t                 fNContributors[2]       ;    // Cut on NContributors in SPD
74   Bool_t                fCutOnNContributors     ;    // flag to activate the cut on NContributors in SPD
75
76                                                      // CUTS ON THE FIRED TRIGGER CLASS
77   TString               fTrigClassMuon          ;    // name of the muon trigger class (CMU by default)
78   TString               fTrigClassInteraction   ;    // name of the interaction trigger class (CINT by default)
79   TString               fTrigClassMuonSide[4]   ;    // name of the muon trigger classes containing the side
80   TString               fTrigClassInteractionSide[4];// name of the interaction trigger classes containing the side
81   Bool_t                fDistinguishTrigClass   ;    // flag to activate the cut on the fired trigger class
82   
83   
84   
85   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;
86   Double_t Rap    (Double_t e, Double_t pz) const;
87   
88   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);
89   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);
90   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);
91   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);
92   
93   ClassDef(AliAnalysisTaskDimuonCFContainerBuilder,1);
94 };
95
96 #endif