]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - FASTSIM/AliMUONFastTracking.h
Removing the flat makefiles
[u/mrichter/AliRoot.git] / FASTSIM / AliMUONFastTracking.h
index ec56bc34cca08c4611d63aa42b196186ac667281..ab8971c467d790b72a9e2bcc52ad53cb9cf2c8d6 100644 (file)
@@ -1,9 +1,19 @@
-#ifndef ALIMUONFASTTRACKING
-#define ALIMUONFASTTRACKING
+#ifndef ALIMUONFASTTRACKING_H
+#define ALIMUONFASTTRACKING_H
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
 /* $Id$ */
+
+//-------------------------------------------------------------------------
+//        Class AliMUONFastTracking 
+//
+//  Manager for the fast simulation of tracking in the muon spectrometer
+//  This class reads the lookup tables containing the parameterization 
+//  of the deltap, deltatheta, deltaphi for different background levels
+//  and provides the related smeared parameters   
+//-------------------------------------------------------------------------
+
 class TF1;
 class TSpline3;
 class TFile;
@@ -12,6 +22,8 @@ class AliMUONFastTrackingEntry;
 
 #include <TObject.h>
 
+enum LUTClusterType {kOld, kNew};
+
 class AliMUONFastTracking :  public TObject {
  public:
     static  AliMUONFastTracking* Instance();
@@ -20,64 +32,63 @@ class AliMUONFastTracking :  public TObject {
     void ReadLUT(TFile *file);
     void GetBinning(Int_t &nbinp, Float_t &pmin, Float_t &pmax,
                    Int_t &nbintheta, Float_t &thetamin, Float_t &thetamax,
-                   Int_t &nbinphi, Float_t &phimin, Float_t &phimax);
+                   Int_t &nbinphi, Float_t &phimin, Float_t &phimax) const;
     void GetIpIthetaIphi(Float_t p, Float_t theta, Float_t phi, Int_t charge,
-                        Int_t &ip, Int_t &itheta, Int_t &iphi);
-    void GetSplit(Int_t ip, Int_t itheta, Int_t &nSplitP, Int_t &nSplitTheta);
+                        Int_t &ip, Int_t &itheta, Int_t &iphi) const;
+    void GetSplit(Int_t ip, Int_t itheta, Int_t &nSplitP, Int_t &nSplitTheta) const;
     Float_t Efficiency(Float_t p, Float_t theta, Float_t phi, Int_t charge);
-    Float_t Acceptance(Float_t p, Float_t theta, Float_t phi, Int_t charge);
-    Float_t MeanP(Float_t p, Float_t theta, Float_t phi, Int_t charge);
-    Float_t SigmaP(Float_t p, Float_t theta, Float_t phi, Int_t charge);
-    Float_t Sigma1P(Float_t p, Float_t theta, Float_t phi, Int_t charge);
-    Float_t NormG2(Float_t p, Float_t theta, Float_t phi, Int_t charge);
-    Float_t MeanG2(Float_t p, Float_t theta, Float_t phi, Int_t charge);
-    Float_t SigmaG2(Float_t p, Float_t theta, Float_t phi, Int_t charge);
-    Float_t MeanTheta(Float_t p, Float_t theta, Float_t phi, Int_t charge);
-    Float_t SigmaTheta(Float_t p, Float_t theta, Float_t phi, Int_t charge);  
-    Float_t MeanPhi(Float_t p, Float_t theta, Float_t phi, Int_t charge);
+    Float_t Acceptance(Float_t p, Float_t theta, Float_t phi, Int_t charge); 
+    Float_t MeanP(Float_t p, Float_t theta, Float_t phi, Int_t charge)     const;
+    Float_t SigmaP(Float_t p, Float_t theta, Float_t phi, Int_t charge)    const;
+    Float_t Sigma1P(Float_t p, Float_t theta, Float_t phi, Int_t charge)   const;
+    Float_t NormG2(Float_t p, Float_t theta, Float_t phi, Int_t charge)    const;
+    Float_t MeanG2(Float_t p, Float_t theta, Float_t phi, Int_t charge)    const;
+    Float_t SigmaG2(Float_t p, Float_t theta, Float_t phi, Int_t charge)   const;
+    Float_t MeanTheta(Float_t p, Float_t theta, Float_t phi, Int_t charge) const;
+    Float_t SigmaTheta(Float_t p, Float_t theta, Float_t phi, Int_t charge)const;  
+    Float_t MeanPhi(Float_t p, Float_t theta, Float_t phi, Int_t charge)   const;
     Float_t SigmaPhi(Float_t p, Float_t theta, Float_t phi, Int_t charge);
 
     void SetSpline();
-    Float_t GetBackground() {return fBkg;}
+    Float_t GetBackground() const {return fBkg;}
+    void SetLUTClusterFinder(LUTClusterType clusterFinder) { fClusterFinder = clusterFinder;}
     void SetBackground(Float_t bkg);
     void UseSpline (Int_t splineSwitch=1) {fSpline = splineSwitch;}
-    void SmearMuon(Float_t pgen, Float_t thetagen, Float_t phigen, Int_t charge,
-                  Float_t &psmear, Float_t &thetasmear, Float_t &phismear,
-                  Float_t &eff, Float_t &acc);
-    TF1* GetFitP() {return fFitp;}
- private:
-    AliMUONFastTracking();
-    AliMUONFastTracking(Float_t bkg){;}
+    TF1* GetFitP(Int_t ip, Int_t itheta, Int_t iphi); 
  protected:
-    Int_t   fNentries;
-    Int_t   fNbinp; 
-    Float_t fPmin;
-    Float_t fPmax;
-    Float_t fDeltaP;
-    Int_t   fNbintheta;
-    Float_t fThetamin;
-    Float_t fThetamax;
-    Float_t fDeltaTheta;
-    Int_t   fNbinphi;
-    Float_t fPhimin;
-    Float_t fPhimax;
-    Float_t fDeltaPhi;
-    Int_t   fPrintLevel;
-    Float_t fBkg;
-    TF1 *fFitp;                                   // func for psmear-pgen distr
+    Int_t   fNbinp;         // n. of momentum bins in the lookup table 
+    Float_t fPmin;          // min. value of momentum parameterized in LUT
+    Float_t fPmax;          // max. value of momentum parameterized in LUT
+    Float_t fDeltaP;        // momentum bin width 
+    Int_t   fNbintheta;     // n. of theta bins in the lookup table 
+    Float_t fThetamin;      // min. value of theta parameterized in LUT
+    Float_t fThetamax;      // max. value of theta parameterized in LUT
+    Float_t fDeltaTheta;    // theta bin width
+    Int_t   fNbinphi;       // n. of phi bins in the lookup table 
+    Float_t fPhimin;        // min. value of phi parameterized in LUT
+    Float_t fPhimax;        // min. value of phi parameterized in LUT
+    Float_t fDeltaPhi;      // phi bin width
+    Int_t   fPrintLevel;    // level of information printed for debugging
+    Float_t fBkg;           // soft background level  
+    TF1 *fFitp[20][20][20];                    // func for psmear-pgen distr
     AliMUONFastTrackingEntry *fEntry[20][20][20][4]; // array of LUT parameters
     AliMUONFastTrackingEntry *fCurrentEntry[20][20][20]; // array of LUT parameters
- public:
-    TSpline3 *fSplineEff[200][3];                 // spline funcs for efficiency
-    TSpline3 *fSplineAcc[200][3];                 // spline funcs for acceptance
-    TSpline3 *fSplineSigmap[200][3];              // 
-    TSpline3 *fSplineSigma1p[200][3];             //!
-    TSpline3 *fSplineSigmatheta[200][3];          //!
-    TSpline3 *fSplineSigmaphi[200][3];            //!
- protected: 
-    Int_t fSpline;
+    TSpline3 *fSplineEff[200][3];        // spline funcs for efficiency
+    TSpline3 *fSplineAcc[200][3];        // spline funcs for acceptance
+    TSpline3 *fSplineSigmap[200][3];     // spl.funcs for dp distribution width
+    TSpline3 *fSplineSigma1p[200][3];    // spl.funcs for dp distr. width correction (see function FitP)
+    TSpline3 *fSplineSigmatheta[200][3]; // spl.funcs for dtheta distr. width
+    TSpline3 *fSplineSigmaphi[200][3];   // spl.funcs for dphi distr. width
+    Int_t fSpline;                       // switches on/off the use of spline
+    LUTClusterType fClusterFinder;       // type of cluster finder (old/new)
     static AliMUONFastTracking*    fgMUONFastTracking; //!Pointer to single instance
-    ClassDef(AliMUONFastTracking,1)                    // Fast MUON Tracking Data Handler
+    ClassDef(AliMUONFastTracking,1)      // Fast MUON Tracking Data Handler
+ private:
+    AliMUONFastTracking();
+    AliMUONFastTracking(Float_t /*bkg*/);
+    AliMUONFastTracking(const AliMUONFastTracking &ft);
+    void Copy(TObject &) const;
+    AliMUONFastTracking& operator=(const AliMUONFastTracking & rhs);
 };
 
 #endif