1 #ifndef AliMuonForwardTrackAnalysis_H
2 #define AliMuonForwardTrackAnalysis_H
4 //====================================================================================================================================================
6 // Class for the analysis of the ALICE muon forward tracks (MUON + MFT)
8 // Contact author: antonio.uras@cern.ch
10 //====================================================================================================================================================
13 #include "TClonesArray.h"
14 #include "AliMuonForwardTrack.h"
15 #include "AliMuonForwardTrackPair.h"
22 #include "TParticle.h"
23 #include "AliMUONTrackParam.h"
24 #include "AliMUONTrackExtrap.h"
25 #include "TDatabasePDG.h"
29 //====================================================================================================================================================
31 class AliMuonForwardTrackAnalysis : public TObject {
35 enum {kNoOption, kResonanceOnly, kCharmOnly, kBeautyOnly, kBackground1mu, kBackground2mu, kNoResonances};
36 enum {kSingleEvent, kMixedEvent};
38 AliMuonForwardTrackAnalysis();
40 virtual ~AliMuonForwardTrackAnalysis() {}; // destructor
42 Bool_t Init(Char_t *inputFileName);
43 Bool_t LoadNextEvent();
44 void Terminate(Char_t *outputFileName);
48 void SetInputDir(Char_t *inputDir) { fInputDir = inputDir; }
49 void SetOutputDir(Char_t *outputDir) { fOutputDir = outputDir; }
51 Int_t GetNTracksAnalyzed() { return fNTracksAnalyzed; }
53 void SetMassRange(Double_t min, Double_t max) { fMassMin=min; fMassMax=max; }
54 void SetTrueMass(Double_t mass) { fTrueMass = mass; }
55 void SetSingleMuonAnalysis(Bool_t singleMuonAnalysis) { fSingleMuonAnalysis = singleMuonAnalysis; }
56 void SetMuonPairAnalysis(Bool_t muonPairAnalysis) { fMuonPairAnalysis = muonPairAnalysis; }
57 void SetMatchTrigger(Int_t triggerLevel) { fTriggerLevel = triggerLevel; }
59 Bool_t AnalyzeSingleMuon();
60 Bool_t AnalyzeMuonPair(Int_t opt);
61 void BuildMuonPairs();
62 void BuildMuonPairsMix();
64 void EvalDimuonVtxResolution(Bool_t eval) { fEvalDimuonVtxResolution = eval; }
66 Bool_t PassedCutSingleMuon(AliMuonForwardTrack *track);
67 Bool_t PassedCutMuonPair(AliMuonForwardTrackPair *pair);
69 void SetVertResMC(Double_t xRes, Double_t yRes, Double_t zRes) { fXVertResMC=xRes; fYVertResMC=yRes; fZVertResMC=zRes; }
71 void SetOption(Int_t option) { fOption = option; }
73 void SetMaxNWrongClustersMC(Int_t nClusters) { fMaxNWrongClustersMC = nClusters; }
74 void SetMinPtSingleMuons(Double_t ptMin) { fMinPtSingleMuons = ptMin; }
75 void SetMaxChi2SingleMuons(Double_t chi2Max) { fMaxChi2SingleMuons = chi2Max; }
76 void SetMaxOffsetSingleMuons(Double_t offsetMax) { fMaxOffsetSingleMuons = offsetMax; }
77 void CorrelateCutOnOffsetChi2(Bool_t option) { fCorrelateCutOnOffsetChi2 = option; }
79 void SetMaxWOffsetMuonPairsAtPrimaryVtx(Double_t wOffsetMax) { fMaxWOffsetMuonPairsAtPrimaryVtx = wOffsetMax; }
80 void SetMaxWOffsetMuonPairsAtPCA(Double_t wOffsetMax) { fMaxWOffsetMuonPairsAtPCA = wOffsetMax; }
81 void SetMaxDistancePrimaryVtxPCA(Double_t distanceMax) { fMaxDistancePrimaryVtxPCA = distanceMax; }
82 void SetMinPCAQuality(Double_t minQuality) { fMinPCAQuality = minQuality; }
84 void ReadEvents(Int_t firstEv, Int_t lastEv) { fFirstEvent = firstEv; fLastEvent = lastEv; }
85 Int_t GetFirstEvent() { return fFirstEvent; }
86 Int_t GetLastEvent() { return fLastEvent; }
88 void UseBransonForCut(Bool_t useBranson) { fUseBransonForCut = useBranson; }
89 void UseBransonForKinematics(Bool_t useBranson) { fUseBransonForKinematics = useBranson; }
91 Double_t GetPseudoProperDecayLength(AliMuonForwardTrackPair *pair, Double_t trueMass);
93 void SetNEventsToMix(Int_t nEvents) { fNEventsToMix = nEvents; if (0<fNEventsToMix && fNEventsToMix<100) fMixing = kTRUE; }
97 TString fInputDir, fOutputDir;
99 TTree *fInputTreeWithBranson, *fInputTreeWithoutBranson; //!
101 TClonesArray *fMuonForwardTracksWithBranson, *fMuonForwardTracksWithBransonMix, *fMuonForwardTrackPairsWithBranson; //!
102 TClonesArray *fMuonForwardTracksWithoutBranson, *fMuonForwardTracksWithoutBransonMix, *fMuonForwardTrackPairsWithoutBranson; //!
103 AliMuonForwardTrack *fMFTTrackWithBranson, *fMFTTrackWithoutBranson, *fMFTTrack; //!
104 AliMuonForwardTrackPair *fMFTTrackPairWithBranson, *fMFTTrackPairWithoutBranson, *fMFTTrackPair; //!
105 TParticle *fMCRefTrack; //!
107 Int_t fEv, fEvMix, fFirstEvent, fLastEvent, fNTracksOfEvent, fNTracksAnalyzedOfEvent, fNTracksAnalyzed, fNPairsOfEvent, fNPairsAnalyzedOfEvent;
108 Int_t fNTracksAnalyzedOfEventAfterCut, fNPairsAnalyzedOfEventAfterCut;
110 TH2D *fHistXOffsetSingleMuonsVsP, *fHistYOffsetSingleMuonsVsP, *fHistOffsetSingleMuonsVsP, *fHistWOffsetSingleMuonsVsP; //!
111 TH2D *fHistXOffsetSingleMuonsVsPt, *fHistYOffsetSingleMuonsVsPt, *fHistOffsetSingleMuonsVsPt, *fHistWOffsetSingleMuonsVsPt; //!
112 TH2D *fHistXErrorSingleMuonsVsP, *fHistYErrorSingleMuonsVsP; //!
113 TH2D *fHistXErrorSingleMuonsVsPt, *fHistYErrorSingleMuonsVsPt; //!
114 TH1D *fHistZOriginSingleMuonsMC;
116 TH2D *fHistZROriginSingleMuonsMC, *fHistSingleMuonsPtRapidity, *fHistSingleMuonsOffsetChi2; //!
118 TH2D *fHistMassMuonPairsMCVsPt; //!
119 TH2D *fHistDimuonVtxResolutionXVsPt; //!
120 TH2D *fHistDimuonVtxResolutionYVsPt; //!
121 TH2D *fHistDimuonVtxResolutionZVsPt; //!
123 TH2D *fHistRapidityPtMuonPairs[2]; //!
124 TH2D *fHistMassMuonPairsVsPt[2]; //!
125 TH2D *fHistMassMuonPairsWithoutMFTVsPt[2]; //!
126 TH2D *fHistMassMuonPairsVsPtLSp[2]; //!
127 TH2D *fHistMassMuonPairsWithoutMFTVsPtLSp[2]; //!
128 TH2D *fHistMassMuonPairsVsPtLSm[2]; //!
129 TH2D *fHistMassMuonPairsWithoutMFTVsPtLSm[2]; //!
131 TH2D *fHistWOffsetMuonPairsAtPrimaryVtxVsPt[2]; //!
132 TH2D *fHistWOffsetMuonPairsAtPCAVsPt[2]; //!
133 TH2D *fHistDistancePrimaryVtxPCAVsPt[2]; //!
134 TH2D *fHistPCAQualityVsPt[2]; //!
135 TH2D *fHistPseudoProperDecayLengthVsPt[2]; //!
137 Bool_t fEvalDimuonVtxResolution;
139 Double_t fTrueMass, fMassMin, fMassMax;
141 Bool_t fSingleMuonAnalysis, fMuonPairAnalysis;
142 Int_t fOption, fTriggerLevel;
144 Double_t fXVertResMC, fYVertResMC, fZVertResMC;
145 Double_t fPrimaryVtxX, fPrimaryVtxY, fPrimaryVtxZ;
146 Int_t fMaxNWrongClustersMC;
147 Double_t fMinPtSingleMuons;
149 Bool_t fUseBransonForCut, fUseBransonForKinematics, fCorrelateCutOnOffsetChi2;
151 Double_t fMaxChi2SingleMuons, fMaxOffsetSingleMuons;
152 Double_t fMaxWOffsetMuonPairsAtPrimaryVtx, fMaxWOffsetMuonPairsAtPCA, fMaxDistancePrimaryVtxPCA, fMinPCAQuality;
157 ClassDef(AliMuonForwardTrackAnalysis, 1)
161 //====================================================================================================================================================