#ifndef AliMuonForwardTrackFinder_H
#define AliMuonForwardTrackFinder_H
#include "TObject.h"
#include "TClonesArray.h"
#include "TH2D.h"
#include "TH1D.h"
#include "TFile.h"
#include "TGeoManager.h"
#include "TMatrixD.h"
#include "TParticle.h"
#include "TMath.h"
#include "TGraph.h"
#include "TEllipse.h"
#include "TCanvas.h"
#include "TString.h"
#include "TLatex.h"
#include "TMarker.h"
#include "TNtuple.h"
#include "TRandom.h"
#include "TIterator.h"
#include "AliLog.h"
#include "AliRun.h"
#include "AliRunLoader.h"
#include "AliLoader.h"
#include "AliHeader.h"
#include "AliMC.h"
#include "AliStack.h"
#include "AliMagF.h"
#include "AliTracker.h"
#include "AliGRPObject.h"
#include "AliRunInfo.h"
#include "AliMUONConstants.h"
#include "AliMUONTrack.h"
#include "AliMUONRecoCheck.h"
#include "AliMUONTrackParam.h"
#include "AliMUONTrackExtrap.h"
#include "AliMUONVTrackStore.h"
#include "AliMUONVCluster.h"
#include "AliMuonForwardTrack.h"
#include "AliMFTCluster.h"
#include "AliMFT.h"
#include "AliMFTSegmentation.h"
#include "AliMFTConstants.h"
class AliMuonForwardTrackFinder : public TObject {
public:
enum matchingOption {kRealMatching, kIdealMatching};
enum {kConverged, kDiverged};
AliMuonForwardTrackFinder();
virtual ~AliMuonForwardTrackFinder();
enum {kAllClusters, kClustersGoodChi2, kClusterOfTrack, kClusterCorrectMC};
void Init(Int_t nRun, Char_t *readDir, Char_t *outDir, Int_t nEventsToAnalyze = -1);
Bool_t LoadNextEvent();
Int_t LoadNextTrack();
Int_t GetNDF(Int_t nClusters);
void PDGNameConverter(const Char_t *nameIn, Char_t *nameOut);
void DrawPlanes();
void Terminate();
void WriteHistos();
void SetRun(Int_t nRun) { fRun = nRun; }
void SetNEventsToAnalyze(Int_t nEventsToAnalyze) { fNEventsToAnalyze = nEventsToAnalyze; }
void SetSigmaSpectrometerCut(Double_t sigmaSpectrometerCut) { fSigmaSpectrometerCut = sigmaSpectrometerCut; }
void SetSigmaClusterCut(Double_t sigmaClusterCut) { fSigmaClusterCut = sigmaClusterCut; }
void SetChi2GlobalCut(Double_t chi2GlobalCut) { fChi2GlobalCut = chi2GlobalCut; }
void SetReadDir(Char_t *dirName) { fReadDir = dirName; }
void SetOutDir(Char_t *dirName) { fOutDir = dirName; }
void SetDraw(Bool_t drawOption);
void SetRAbsorberCut(Double_t rAbsorberCut) { fRAbsorberCut = rAbsorberCut; }
void SetLowPtCut(Double_t lowPtCut) { fLowPtCut = lowPtCut; }
void SetNFinalCandidatesCut(Int_t nFinalCandidatesCut) { fNFinalCandidatesCut = nFinalCandidatesCut; }
void SetVertexError(Double_t xErr, Double_t yErr, Double_t zErr) { fVertexErrorX=xErr; fVertexErrorY=yErr; fVertexErrorZ=zErr; }
Int_t GetRun() { return fRun; }
Int_t GetNEvents() { return fNEventsToAnalyze; }
Double_t GetSigmaSpectrometerCut() { return fSigmaSpectrometerCut; }
Double_t GetSigmaClusterCut() { return fSigmaClusterCut; }
Double_t GetChi2GlobalCut() { return fChi2GlobalCut; }
Double_t GetRAbsorberCut() { return fRAbsorberCut; }
Double_t GetLowPtCut() { return fLowPtCut; }
Int_t GetNPlanesMFT() { return fNPlanesMFT; }
Int_t GetNFinalCandidatesCut() { return fNFinalCandidatesCut; }
Int_t GetCurrentEvent() { return fEv; }
Int_t GetNRealTracksAnalyzed() const { return fCountRealTracksAnalyzed; }
Int_t GetNRealTracksAnalyzedOfEvent() const { return fCountRealTracksAnalyzedOfEvent; }
Int_t GetNRealTracksWithRefMC() const { return fCountRealTracksWithRefMC; }
Int_t GetNRealTracksWithRefMC_andTrigger() const { return fCountRealTracksWithRefMC_andTrigger; }
Int_t GetNRealTracksWithRefMC_andTrigger_andGoodPt() const { return fCountRealTracksWithRefMC_andTrigger_andGoodPt; }
Int_t GetNRealTracksWithRefMC_andTrigger_andGoodPt_andGoodTheta() const { return fCountRealTracksWithRefMC_andTrigger_andGoodPt_andGoodTheta; }
void SetNPlanesMFT(Int_t nPlanesMFT) { fNPlanesMFT = nPlanesMFT; }
void SeparateFrontBackClusters();
void SetNMaxMissingMFTClusters(Int_t nMaxMissingMFTClusters) { fNMaxMissingMFTClusters = nMaxMissingMFTClusters; }
void SetMandatoryPlane(Int_t iPlane) { if (0<=iPlane && iPlane<AliMFTConstants::fNMaxPlanes) fIsPlaneMandatory[iPlane] = kTRUE; }
Int_t FindClusterInPlane(Int_t planeId);
void AttachGoodClusterInPlane(Int_t planeId);
void FillPlanesWithTrackHistory();
Double_t TryOneCluster(const AliMUONTrackParam &trackParam, AliMFTCluster *cluster);
void BookHistos();
void SetTitleHistos();
void BookPlanes();
void ResetPlanes();
void PrintParticleHistory();
Bool_t IsCorrectMatch(AliMFTCluster *cluster);
void CheckCurrentMuonTrackable();
Bool_t IsMother(const Char_t *nameMother);
void SetMatchingMode(Int_t matchingMode) { fMatchingMode = matchingMode; }
void SetMinResearchRadiusAtPlane(Int_t plane, Double_t radius) { if (plane>=0 && plane<fNMaxPlanes) fMinResearchRadiusAtPlane[plane] = radius; }
void FillOutputTree();
void WriteOutputTree();
Bool_t InitGRP();
Bool_t SetRunNumber();
void SetMaxNTracksToBeAnalyzed(Int_t nTracks) { fMaxNTracksToBeAnalyzed = nTracks; }
void SetBransonCorrection(Bool_t correction) { fBransonCorrection = correction; }
private:
AliMuonForwardTrackFinder(const AliMuonForwardTrackFinder& obj);
AliMuonForwardTrackFinder& operator=(const AliMuonForwardTrackFinder& other);
protected:
static const Int_t fNMaxPlanes = AliMFTConstants::fNMaxPlanes;
static const Double_t fRadLengthSi;
static const Int_t fMaxNCandidates = 1000;
Int_t fRun;
Int_t fNEventsToAnalyze;
Double_t fSigmaClusterCut;
Double_t fScaleSigmaClusterCut;
Bool_t fGlobalTrackingDiverged;
Double_t fChi2GlobalCut;
Double_t fSigmaSpectrometerCut;
Double_t fVertexErrorX;
Double_t fVertexErrorY;
Double_t fVertexErrorZ;
Int_t fNFinalCandidatesCut;
TString fReadDir;
TString fOutDir;
Bool_t fDrawOption;
Double_t fDistanceFromGoodClusterAndTrackAtLastPlane;
Double_t fDistanceFromBestClusterAndTrackAtLastPlane;
TClonesArray *fMFTClusterArray[fNMaxPlanes];
TClonesArray *fMFTClusterArrayFront[fNMaxPlanes];
TClonesArray *fMFTClusterArrayBack[fNMaxPlanes];
Double_t fRAbsorberCut;
Double_t fLowPtCut;
Int_t fNPlanesMFT;
Int_t fNPlanesMFTAnalyzed;
Int_t fNMaxMissingMFTClusters;
Bool_t fIsPlaneMandatory[fNMaxPlanes];
Int_t fEv;
Int_t fLabelMC;
Bool_t fIsClusterCompatible[10];
Double_t fZPlane[fNMaxPlanes];
Double_t fRPlaneMax[fNMaxPlanes];
Double_t fRPlaneMin[fNMaxPlanes];
TH1D *fHistRadiusEndOfAbsorber, *fHistNTracksAfterExtrapolation[fNMaxPlanes];
TH1D *fHistNGoodClustersForFinalTracks, *fHistResearchRadius[fNMaxPlanes];
TH1D *fHistDistanceGoodClusterFromTrackMinusDistanceBestClusterFromTrackAtLastPlane;
TH1D *fHistDistanceGoodClusterFromTrackAtLastPlane;
TH1D *fHistChi2Cluster_GoodCluster[fNMaxPlanes], *fHistChi2Cluster_BadCluster[fNMaxPlanes];
TH1D *fHistGlobalChi2AtPlaneFor_GOOD_CandidatesOfTrackableMuons[fNMaxPlanes];
TH1D *fHistGlobalChi2AtPlaneFor_BAD_CandidatesOfTrackableMuons[fNMaxPlanes];
TNtuple *fNtuFinalCandidates;
TNtuple *fNtuFinalBestCandidates;
TGraph *fGrMFTPlane[4][20];
TEllipse *fCircleExt[fNMaxPlanes], *fCircleInt[fNMaxPlanes];
TCanvas *fCanvas;
TLatex *fTxtMuonHistory, *fTxtTrackGoodClusters, *fTxtTrackChi2[fNMaxPlanes];
TLatex *fTxtTrackFinalChi2, *fTxtTrackMomentum, *fTxtFinalCandidates, *fTxtDummy;
TLatex *fTxtAllClust, *fTxtClustGoodChi2, *fTxtClustMC, *fTxtClustOfTrack;
TMarker *fMrkAllClust, *fMrkClustGoodChi2, *fMrkClustMC, *fMrkClustOfTrack;
Int_t fCountRealTracksAnalyzed;
Int_t fMaxNTracksToBeAnalyzed;
Int_t fCountRealTracksWithRefMC;
Int_t fCountRealTracksWithRefMC_andTrigger;
Int_t fCountRealTracksWithRefMC_andTrigger_andGoodPt;
Int_t fCountRealTracksWithRefMC_andTrigger_andGoodPt_andGoodTheta;
Int_t fCountRealTracksAnalyzedOfEvent;
Int_t fCountRealTracksAnalyzedWithFinalCandidates;
TFile *fFileCluster;
TFile *fFileESD;
TFile *fFile_gAlice;
AliRunLoader *fRunLoader;
AliLoader *fMFTLoader;
AliMUONRecoCheck *fMuonRecoCheck;
TTree *fMFTClusterTree;
AliMUONTrack *fMuonTrackReco;
AliMuonForwardTrack *fCurrentTrack;
AliMuonForwardTrack *fFinalBestCandidate;
Bool_t fIsCurrentMuonTrackable;
Bool_t fIsGoodClusterInPlane[fNMaxPlanes];
TClonesArray *fCandidateTracks;
AliMUONVTrackStore *fTrackStore;
AliMUONVTrackStore *fTrackRefStore;
TIterator *fNextTrack;
AliStack *fStack;
AliMFT *fMFT;
AliMFTSegmentation *fSegmentation;
TFile *fOutputTreeFile, *fOutputQAFile;
TTree *fOutputEventTree;
TClonesArray *fMuonForwardTracks;
Int_t fMatchingMode;
Double_t fMinResearchRadiusAtPlane[fNMaxPlanes];
AliGRPObject *fGRPData;
AliRunInfo *fRunInfo;
Bool_t fBransonCorrection;
ClassDef(AliMuonForwardTrackFinder, 1);
};
#endif
AliMuonForwardTrackFinder.h:1 AliMuonForwardTrackFinder.h:2 AliMuonForwardTrackFinder.h:3 AliMuonForwardTrackFinder.h:4 AliMuonForwardTrackFinder.h:5 AliMuonForwardTrackFinder.h:6 AliMuonForwardTrackFinder.h:7 AliMuonForwardTrackFinder.h:8 AliMuonForwardTrackFinder.h:9 AliMuonForwardTrackFinder.h:10 AliMuonForwardTrackFinder.h:11 AliMuonForwardTrackFinder.h:12 AliMuonForwardTrackFinder.h:13 AliMuonForwardTrackFinder.h:14 AliMuonForwardTrackFinder.h:15 AliMuonForwardTrackFinder.h:16 AliMuonForwardTrackFinder.h:17 AliMuonForwardTrackFinder.h:18 AliMuonForwardTrackFinder.h:19 AliMuonForwardTrackFinder.h:20 AliMuonForwardTrackFinder.h:21 AliMuonForwardTrackFinder.h:22 AliMuonForwardTrackFinder.h:23 AliMuonForwardTrackFinder.h:24 AliMuonForwardTrackFinder.h:25 AliMuonForwardTrackFinder.h:26 AliMuonForwardTrackFinder.h:27 AliMuonForwardTrackFinder.h:28 AliMuonForwardTrackFinder.h:29 AliMuonForwardTrackFinder.h:30 AliMuonForwardTrackFinder.h:31 AliMuonForwardTrackFinder.h:32 AliMuonForwardTrackFinder.h:33 AliMuonForwardTrackFinder.h:34 AliMuonForwardTrackFinder.h:35 AliMuonForwardTrackFinder.h:36 AliMuonForwardTrackFinder.h:37 AliMuonForwardTrackFinder.h:38 AliMuonForwardTrackFinder.h:39 AliMuonForwardTrackFinder.h:40 AliMuonForwardTrackFinder.h:41 AliMuonForwardTrackFinder.h:42 AliMuonForwardTrackFinder.h:43 AliMuonForwardTrackFinder.h:44 AliMuonForwardTrackFinder.h:45 AliMuonForwardTrackFinder.h:46 AliMuonForwardTrackFinder.h:47 AliMuonForwardTrackFinder.h:48 AliMuonForwardTrackFinder.h:49 AliMuonForwardTrackFinder.h:50 AliMuonForwardTrackFinder.h:51 AliMuonForwardTrackFinder.h:52 AliMuonForwardTrackFinder.h:53 AliMuonForwardTrackFinder.h:54 AliMuonForwardTrackFinder.h:55 AliMuonForwardTrackFinder.h:56 AliMuonForwardTrackFinder.h:57 AliMuonForwardTrackFinder.h:58 AliMuonForwardTrackFinder.h:59 AliMuonForwardTrackFinder.h:60 AliMuonForwardTrackFinder.h:61 AliMuonForwardTrackFinder.h:62 AliMuonForwardTrackFinder.h:63 AliMuonForwardTrackFinder.h:64 AliMuonForwardTrackFinder.h:65 AliMuonForwardTrackFinder.h:66 AliMuonForwardTrackFinder.h:67 AliMuonForwardTrackFinder.h:68 AliMuonForwardTrackFinder.h:69 AliMuonForwardTrackFinder.h:70 AliMuonForwardTrackFinder.h:71 AliMuonForwardTrackFinder.h:72 AliMuonForwardTrackFinder.h:73 AliMuonForwardTrackFinder.h:74 AliMuonForwardTrackFinder.h:75 AliMuonForwardTrackFinder.h:76 AliMuonForwardTrackFinder.h:77 AliMuonForwardTrackFinder.h:78 AliMuonForwardTrackFinder.h:79 AliMuonForwardTrackFinder.h:80 AliMuonForwardTrackFinder.h:81 AliMuonForwardTrackFinder.h:82 AliMuonForwardTrackFinder.h:83 AliMuonForwardTrackFinder.h:84 AliMuonForwardTrackFinder.h:85 AliMuonForwardTrackFinder.h:86 AliMuonForwardTrackFinder.h:87 AliMuonForwardTrackFinder.h:88 AliMuonForwardTrackFinder.h:89 AliMuonForwardTrackFinder.h:90 AliMuonForwardTrackFinder.h:91 AliMuonForwardTrackFinder.h:92 AliMuonForwardTrackFinder.h:93 AliMuonForwardTrackFinder.h:94 AliMuonForwardTrackFinder.h:95 AliMuonForwardTrackFinder.h:96 AliMuonForwardTrackFinder.h:97 AliMuonForwardTrackFinder.h:98 AliMuonForwardTrackFinder.h:99 AliMuonForwardTrackFinder.h:100 AliMuonForwardTrackFinder.h:101 AliMuonForwardTrackFinder.h:102 AliMuonForwardTrackFinder.h:103 AliMuonForwardTrackFinder.h:104 AliMuonForwardTrackFinder.h:105 AliMuonForwardTrackFinder.h:106 AliMuonForwardTrackFinder.h:107 AliMuonForwardTrackFinder.h:108 AliMuonForwardTrackFinder.h:109 AliMuonForwardTrackFinder.h:110 AliMuonForwardTrackFinder.h:111 AliMuonForwardTrackFinder.h:112 AliMuonForwardTrackFinder.h:113 AliMuonForwardTrackFinder.h:114 AliMuonForwardTrackFinder.h:115 AliMuonForwardTrackFinder.h:116 AliMuonForwardTrackFinder.h:117 AliMuonForwardTrackFinder.h:118 AliMuonForwardTrackFinder.h:119 AliMuonForwardTrackFinder.h:120 AliMuonForwardTrackFinder.h:121 AliMuonForwardTrackFinder.h:122 AliMuonForwardTrackFinder.h:123 AliMuonForwardTrackFinder.h:124 AliMuonForwardTrackFinder.h:125 AliMuonForwardTrackFinder.h:126 AliMuonForwardTrackFinder.h:127 AliMuonForwardTrackFinder.h:128 AliMuonForwardTrackFinder.h:129 AliMuonForwardTrackFinder.h:130 AliMuonForwardTrackFinder.h:131 AliMuonForwardTrackFinder.h:132 AliMuonForwardTrackFinder.h:133 AliMuonForwardTrackFinder.h:134 AliMuonForwardTrackFinder.h:135 AliMuonForwardTrackFinder.h:136 AliMuonForwardTrackFinder.h:137 AliMuonForwardTrackFinder.h:138 AliMuonForwardTrackFinder.h:139 AliMuonForwardTrackFinder.h:140 AliMuonForwardTrackFinder.h:141 AliMuonForwardTrackFinder.h:142 AliMuonForwardTrackFinder.h:143 AliMuonForwardTrackFinder.h:144 AliMuonForwardTrackFinder.h:145 AliMuonForwardTrackFinder.h:146 AliMuonForwardTrackFinder.h:147 AliMuonForwardTrackFinder.h:148 AliMuonForwardTrackFinder.h:149 AliMuonForwardTrackFinder.h:150 AliMuonForwardTrackFinder.h:151 AliMuonForwardTrackFinder.h:152 AliMuonForwardTrackFinder.h:153 AliMuonForwardTrackFinder.h:154 AliMuonForwardTrackFinder.h:155 AliMuonForwardTrackFinder.h:156 AliMuonForwardTrackFinder.h:157 AliMuonForwardTrackFinder.h:158 AliMuonForwardTrackFinder.h:159 AliMuonForwardTrackFinder.h:160 AliMuonForwardTrackFinder.h:161 AliMuonForwardTrackFinder.h:162 AliMuonForwardTrackFinder.h:163 AliMuonForwardTrackFinder.h:164 AliMuonForwardTrackFinder.h:165 AliMuonForwardTrackFinder.h:166 AliMuonForwardTrackFinder.h:167 AliMuonForwardTrackFinder.h:168 AliMuonForwardTrackFinder.h:169 AliMuonForwardTrackFinder.h:170 AliMuonForwardTrackFinder.h:171 AliMuonForwardTrackFinder.h:172 AliMuonForwardTrackFinder.h:173 AliMuonForwardTrackFinder.h:174 AliMuonForwardTrackFinder.h:175 AliMuonForwardTrackFinder.h:176 AliMuonForwardTrackFinder.h:177 AliMuonForwardTrackFinder.h:178 AliMuonForwardTrackFinder.h:179 AliMuonForwardTrackFinder.h:180 AliMuonForwardTrackFinder.h:181 AliMuonForwardTrackFinder.h:182 AliMuonForwardTrackFinder.h:183 AliMuonForwardTrackFinder.h:184 AliMuonForwardTrackFinder.h:185 AliMuonForwardTrackFinder.h:186 AliMuonForwardTrackFinder.h:187 AliMuonForwardTrackFinder.h:188 AliMuonForwardTrackFinder.h:189 AliMuonForwardTrackFinder.h:190 AliMuonForwardTrackFinder.h:191 AliMuonForwardTrackFinder.h:192 AliMuonForwardTrackFinder.h:193 AliMuonForwardTrackFinder.h:194 AliMuonForwardTrackFinder.h:195 AliMuonForwardTrackFinder.h:196 AliMuonForwardTrackFinder.h:197 AliMuonForwardTrackFinder.h:198 AliMuonForwardTrackFinder.h:199 AliMuonForwardTrackFinder.h:200 AliMuonForwardTrackFinder.h:201 AliMuonForwardTrackFinder.h:202 AliMuonForwardTrackFinder.h:203 AliMuonForwardTrackFinder.h:204 AliMuonForwardTrackFinder.h:205 AliMuonForwardTrackFinder.h:206 AliMuonForwardTrackFinder.h:207 AliMuonForwardTrackFinder.h:208 AliMuonForwardTrackFinder.h:209 AliMuonForwardTrackFinder.h:210 AliMuonForwardTrackFinder.h:211 AliMuonForwardTrackFinder.h:212 AliMuonForwardTrackFinder.h:213 AliMuonForwardTrackFinder.h:214 AliMuonForwardTrackFinder.h:215 AliMuonForwardTrackFinder.h:216 AliMuonForwardTrackFinder.h:217 AliMuonForwardTrackFinder.h:218 AliMuonForwardTrackFinder.h:219 AliMuonForwardTrackFinder.h:220 AliMuonForwardTrackFinder.h:221 AliMuonForwardTrackFinder.h:222 AliMuonForwardTrackFinder.h:223 AliMuonForwardTrackFinder.h:224 AliMuonForwardTrackFinder.h:225 AliMuonForwardTrackFinder.h:226 AliMuonForwardTrackFinder.h:227 AliMuonForwardTrackFinder.h:228 AliMuonForwardTrackFinder.h:229 AliMuonForwardTrackFinder.h:230 AliMuonForwardTrackFinder.h:231 AliMuonForwardTrackFinder.h:232 AliMuonForwardTrackFinder.h:233 AliMuonForwardTrackFinder.h:234 AliMuonForwardTrackFinder.h:235 AliMuonForwardTrackFinder.h:236 AliMuonForwardTrackFinder.h:237 AliMuonForwardTrackFinder.h:238 AliMuonForwardTrackFinder.h:239 AliMuonForwardTrackFinder.h:240 AliMuonForwardTrackFinder.h:241 AliMuonForwardTrackFinder.h:242 AliMuonForwardTrackFinder.h:243 AliMuonForwardTrackFinder.h:244 AliMuonForwardTrackFinder.h:245 AliMuonForwardTrackFinder.h:246 AliMuonForwardTrackFinder.h:247 AliMuonForwardTrackFinder.h:248 AliMuonForwardTrackFinder.h:249 AliMuonForwardTrackFinder.h:250 AliMuonForwardTrackFinder.h:251 AliMuonForwardTrackFinder.h:252 AliMuonForwardTrackFinder.h:253 AliMuonForwardTrackFinder.h:254 AliMuonForwardTrackFinder.h:255 AliMuonForwardTrackFinder.h:256 AliMuonForwardTrackFinder.h:257 AliMuonForwardTrackFinder.h:258 AliMuonForwardTrackFinder.h:259 AliMuonForwardTrackFinder.h:260 AliMuonForwardTrackFinder.h:261 AliMuonForwardTrackFinder.h:262 AliMuonForwardTrackFinder.h:263 AliMuonForwardTrackFinder.h:264 AliMuonForwardTrackFinder.h:265 AliMuonForwardTrackFinder.h:266 AliMuonForwardTrackFinder.h:267 AliMuonForwardTrackFinder.h:268 AliMuonForwardTrackFinder.h:269 AliMuonForwardTrackFinder.h:270 AliMuonForwardTrackFinder.h:271 AliMuonForwardTrackFinder.h:272 AliMuonForwardTrackFinder.h:273