public:
+ enum {kConverged, kDiverged};
+
enum matchingOption {kRealMatching, kIdealMatching};
AliMuonForwardTrackFinder();
void SetRAbsorberCut(Double_t rAbsorberCut) { fRAbsorberCut = rAbsorberCut; }
void SetLowPtCut(Double_t lowPtCut) { fLowPtCut = lowPtCut; }
void SetNFinalCandidatesCut(Int_t nFinalCandidatesCut) { fNFinalCandidatesCut = nFinalCandidatesCut; }
- void SetExtrapOriginTransvError(Double_t extrapOriginTransvError) { fExtrapOriginTransvError = extrapOriginTransvError; }
- void SetGaussianBlurZVert(Double_t gaussianBlurZVert) { fGaussianBlurZVert = gaussianBlurZVert; }
+ 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 GetChi2GlobalCut() { return fChi2GlobalCut; }
Double_t GetRAbsorberCut() { return fRAbsorberCut; }
Double_t GetLowPtCut() { return fLowPtCut; }
- Double_t GetExtrapOriginTransvError() { return fExtrapOriginTransvError; }
Int_t GetNPlanesMFT() { return fNPlanesMFT; }
Int_t GetNFinalCandidatesCut() { return fNFinalCandidatesCut; }
Int_t GetCurrentEvent() { return fEv; }
void SetNMaxMissingMFTClusters(Int_t nMaxMissingMFTClusters) { fNMaxMissingMFTClusters = nMaxMissingMFTClusters; }
void SetMandatoryPlane(Int_t iPlane) { if (0<=iPlane && iPlane<AliMFTConstants::fNMaxPlanes) fIsPlaneMandatory[iPlane] = kTRUE; }
- void FindClusterInPlane(Int_t planeId);
+ Int_t FindClusterInPlane(Int_t planeId);
void AttachGoodClusterInPlane(Int_t planeId);
void FillPlanesWithTrackHistory();
Double_t TryOneCluster(const AliMUONTrackParam &trackParam, AliMFTCluster *cluster);
Bool_t IsCorrectMatch(AliMFTCluster *cluster);
void CheckCurrentMuonTrackable();
- Bool_t IsMother(Char_t *nameMother);
+ Bool_t IsMother(const Char_t *nameMother);
void SetMatchingMode(Int_t matchingMode) { fMatchingMode = matchingMode; }
- void SetMinResearchRadiusAtLastPlane(Double_t minResearchRadius) { fMinResearchRadiusAtLastPlane = minResearchRadius; }
+ void SetMinResearchRadiusAtPlane(Int_t plane, Double_t radius) { if (plane>=0 && plane<fNMaxPlanes) fMinResearchRadiusAtPlane[plane] = radius; }
void FillOutputTree();
void WriteOutputTree();
Bool_t SetRunNumber();
void SetMaxNTracksToBeAnalyzed(Int_t nTracks) { fMaxNTracksToBeAnalyzed = nTracks; }
+ void SetBransonCorrection(Bool_t correction) { fBransonCorrection = correction; }
private:
static const Int_t fNMaxPlanes = AliMFTConstants::fNMaxPlanes; // max number of MFT planes
static const Double_t fRadLengthSi;
+ static const Int_t fMaxNCandidates = 1000;
Int_t fRun;
Int_t fNEventsToAnalyze; // events to analyze
Double_t fSigmaClusterCut; // to select the clusters in the MFT planes which are compatible with the extrapolated muon track
+ Double_t fScaleSigmaClusterCut; // to tune the cut on the compatible clusters in case of too many candidates
+ Bool_t fGlobalTrackingDiverged; // to keep memory of a possible divergence in the global tracking finding
Double_t fChi2GlobalCut; // cut on the final chi2 of the global muon track
Double_t fSigmaSpectrometerCut; // for the selection of the tracks in the muon spectrometer
- Double_t fExtrapOriginTransvError; // uncertainty on the x and y position of the muon's origin
- Double_t fGaussianBlurZVert; // smearing of the z position of the vertex, to simulate real case when the simulation was performed at fixed zVert=0.
+ Double_t fVertexErrorX; // uncertainty on the x position of the muon's origin
+ Double_t fVertexErrorY; // uncertainty on the y position of the muon's origin
+ Double_t fVertexErrorZ; // uncertainty on the z position of the muon's origin
Int_t fNFinalCandidatesCut; // cut on the number of the final candidates for the muon track
TString fReadDir;
TString fOutDir;
Double_t fRPlaneMax[fNMaxPlanes]; // max radius of the MFT planes (the support)
Double_t fRPlaneMin[fNMaxPlanes]; // min radius of the MFT planes (the support)
- TH1D *fHistPtSpectrometer, *fHistPtMuonTrackWithGoodMatch, *fHistPtMuonTrackWithBadMatch; //
TH1D *fHistRadiusEndOfAbsorber, *fHistNTracksAfterExtrapolation[fNMaxPlanes]; //
TH1D *fHistNGoodClustersForFinalTracks, *fHistResearchRadius[fNMaxPlanes]; //
TH1D *fHistDistanceGoodClusterFromTrackMinusDistanceBestClusterFromTrackAtLastPlane; //
Int_t fCountRealTracksAnalyzedOfEvent;
Int_t fCountRealTracksAnalyzedWithFinalCandidates;
- Int_t fNClustersGlobalTrack[fNMaxPlanes], fNDFGlobalTrack[fNMaxPlanes];
-
TFile *fFileCluster; //!
TFile *fFileESD; //!
TFile *fFile_gAlice; //!
TClonesArray *fMuonForwardTracks; //! array of AliMuonForwardTrack
Int_t fMatchingMode;
- Double_t fMinResearchRadiusAtLastPlane;
+ Double_t fMinResearchRadiusAtPlane[fNMaxPlanes];
AliGRPObject *fGRPData; //! Data from the GRP/GRP/Data CDB folder
AliRunInfo *fRunInfo; //!
+
+ Bool_t fBransonCorrection; // if TRUE, Branson Correction is applied when extrapolating the MUON tracks to the vertex region
ClassDef(AliMuonForwardTrackFinder, 1);
};
-//======================================================================================================
+//====================================================================================================================================================
#endif