Merge branch 'flatdev' of https://git.cern.ch/reps/AliRoot into flatdev
[u/mrichter/AliRoot.git] / FASTSIM / AliMUONFastTracking.h
CommitLineData
041f7f97 1#ifndef ALIMUONFASTTRACKING_H
2#define ALIMUONFASTTRACKING_H
6255180c 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
041f7f97 7
8//-------------------------------------------------------------------------
9// Class AliMUONFastTracking
10//
11// Manager for the fast simulation of tracking in the muon spectrometer
12// This class reads the lookup tables containing the parameterization
13// of the deltap, deltatheta, deltaphi for different background levels
14// and provides the related smeared parameters
15//-------------------------------------------------------------------------
16
6255180c 17class TF1;
18class TSpline3;
19class TFile;
20class AliMUONFastTrackingEntry;
21
22
23#include <TObject.h>
24
d53fc881 25enum LUTClusterType {kOld, kNew};
26
6255180c 27class AliMUONFastTracking : public TObject {
28 public:
29 static AliMUONFastTracking* Instance();
30 ~AliMUONFastTracking(){;}
31 void Init(Float_t bkg);
32 void ReadLUT(TFile *file);
33 void GetBinning(Int_t &nbinp, Float_t &pmin, Float_t &pmax,
34 Int_t &nbintheta, Float_t &thetamin, Float_t &thetamax,
041f7f97 35 Int_t &nbinphi, Float_t &phimin, Float_t &phimax) const;
6255180c 36 void GetIpIthetaIphi(Float_t p, Float_t theta, Float_t phi, Int_t charge,
041f7f97 37 Int_t &ip, Int_t &itheta, Int_t &iphi) const;
38 void GetSplit(Int_t ip, Int_t itheta, Int_t &nSplitP, Int_t &nSplitTheta) const;
6255180c 39 Float_t Efficiency(Float_t p, Float_t theta, Float_t phi, Int_t charge);
041f7f97 40 Float_t Acceptance(Float_t p, Float_t theta, Float_t phi, Int_t charge);
41 Float_t MeanP(Float_t p, Float_t theta, Float_t phi, Int_t charge) const;
42 Float_t SigmaP(Float_t p, Float_t theta, Float_t phi, Int_t charge) const;
43 Float_t Sigma1P(Float_t p, Float_t theta, Float_t phi, Int_t charge) const;
44 Float_t NormG2(Float_t p, Float_t theta, Float_t phi, Int_t charge) const;
45 Float_t MeanG2(Float_t p, Float_t theta, Float_t phi, Int_t charge) const;
46 Float_t SigmaG2(Float_t p, Float_t theta, Float_t phi, Int_t charge) const;
47 Float_t MeanTheta(Float_t p, Float_t theta, Float_t phi, Int_t charge) const;
48 Float_t SigmaTheta(Float_t p, Float_t theta, Float_t phi, Int_t charge)const;
49 Float_t MeanPhi(Float_t p, Float_t theta, Float_t phi, Int_t charge) const;
6255180c 50 Float_t SigmaPhi(Float_t p, Float_t theta, Float_t phi, Int_t charge);
51
52 void SetSpline();
041f7f97 53 Float_t GetBackground() const {return fBkg;}
d53fc881 54 void SetLUTClusterFinder(LUTClusterType clusterFinder) { fClusterFinder = clusterFinder;}
6255180c 55 void SetBackground(Float_t bkg);
56 void UseSpline (Int_t splineSwitch=1) {fSpline = splineSwitch;}
d53fc881 57 TF1* GetFitP(Int_t ip, Int_t itheta, Int_t iphi);
6255180c 58 protected:
041f7f97 59 Int_t fNbinp; // n. of momentum bins in the lookup table
60 Float_t fPmin; // min. value of momentum parameterized in LUT
61 Float_t fPmax; // max. value of momentum parameterized in LUT
62 Float_t fDeltaP; // momentum bin width
63 Int_t fNbintheta; // n. of theta bins in the lookup table
64 Float_t fThetamin; // min. value of theta parameterized in LUT
65 Float_t fThetamax; // max. value of theta parameterized in LUT
66 Float_t fDeltaTheta; // theta bin width
67 Int_t fNbinphi; // n. of phi bins in the lookup table
68 Float_t fPhimin; // min. value of phi parameterized in LUT
69 Float_t fPhimax; // min. value of phi parameterized in LUT
70 Float_t fDeltaPhi; // phi bin width
71 Int_t fPrintLevel; // level of information printed for debugging
72 Float_t fBkg; // soft background level
d53fc881 73 TF1 *fFitp[20][20][20]; // func for psmear-pgen distr
6255180c 74 AliMUONFastTrackingEntry *fEntry[20][20][20][4]; // array of LUT parameters
75 AliMUONFastTrackingEntry *fCurrentEntry[20][20][20]; // array of LUT parameters
041f7f97 76 TSpline3 *fSplineEff[200][3]; // spline funcs for efficiency
77 TSpline3 *fSplineAcc[200][3]; // spline funcs for acceptance
78 TSpline3 *fSplineSigmap[200][3]; // spl.funcs for dp distribution width
79 TSpline3 *fSplineSigma1p[200][3]; // spl.funcs for dp distr. width correction (see function FitP)
80 TSpline3 *fSplineSigmatheta[200][3]; // spl.funcs for dtheta distr. width
81 TSpline3 *fSplineSigmaphi[200][3]; // spl.funcs for dphi distr. width
82 Int_t fSpline; // switches on/off the use of spline
83 LUTClusterType fClusterFinder; // type of cluster finder (old/new)
6255180c 84 static AliMUONFastTracking* fgMUONFastTracking; //!Pointer to single instance
041f7f97 85 ClassDef(AliMUONFastTracking,1) // Fast MUON Tracking Data Handler
86 private:
87 AliMUONFastTracking();
e6e76983 88 AliMUONFastTracking(Float_t /*bkg*/);
041f7f97 89 AliMUONFastTracking(const AliMUONFastTracking &ft);
15a060e4 90 void Copy(TObject &) const;
041f7f97 91 AliMUONFastTracking& operator=(const AliMUONFastTracking & rhs);
6255180c 92};
93
94#endif
95