LCOV - code coverage report
Current view: top level - FASTSIM - AliMUONFastTracking.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 5 20.0 %
Date: 2016-06-14 17:26:59 Functions: 1 11 9.1 %

          Line data    Source code
       1             : #ifndef ALIMUONFASTTRACKING_H
       2             : #define ALIMUONFASTTRACKING_H
       3             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       4             :  * See cxx source for full Copyright notice                               */
       5             : 
       6             : /* $Id$ */
       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             : 
      17             : class TF1;
      18             : class TSpline3;
      19             : class TFile;
      20             : class AliMUONFastTrackingEntry;
      21             : 
      22             : 
      23             : #include <TObject.h>
      24             : 
      25             : enum LUTClusterType {kOld, kNew};
      26             : 
      27             : class AliMUONFastTracking :  public TObject {
      28             :  public:
      29             :     static  AliMUONFastTracking* Instance();
      30           0 :     ~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,
      35             :                     Int_t &nbinphi, Float_t &phimin, Float_t &phimax) const;
      36             :     void GetIpIthetaIphi(Float_t p, Float_t theta, Float_t phi, Int_t charge,
      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;
      39             :     Float_t Efficiency(Float_t p, Float_t theta, Float_t phi, Int_t charge);
      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;
      50             :     Float_t SigmaPhi(Float_t p, Float_t theta, Float_t phi, Int_t charge);
      51             : 
      52             :     void SetSpline();
      53           0 :     Float_t GetBackground() const {return fBkg;}
      54           0 :     void SetLUTClusterFinder(LUTClusterType clusterFinder) { fClusterFinder = clusterFinder;}
      55             :     void SetBackground(Float_t bkg);
      56           0 :     void UseSpline (Int_t splineSwitch=1) {fSpline = splineSwitch;}
      57             :     TF1* GetFitP(Int_t ip, Int_t itheta, Int_t iphi); 
      58             :  protected:
      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  
      73             :     TF1 *fFitp[20][20][20];                    // func for psmear-pgen distr
      74             :     AliMUONFastTrackingEntry *fEntry[20][20][20][4]; // array of LUT parameters
      75             :     AliMUONFastTrackingEntry *fCurrentEntry[20][20][20]; // array of LUT parameters
      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)
      84             :     static AliMUONFastTracking*    fgMUONFastTracking; //!Pointer to single instance
      85          12 :     ClassDef(AliMUONFastTracking,1)      // Fast MUON Tracking Data Handler
      86             :  private:
      87             :     AliMUONFastTracking();
      88             :     AliMUONFastTracking(Float_t /*bkg*/);
      89             :     AliMUONFastTracking(const AliMUONFastTracking &ft);
      90             :     void Copy(TObject &) const;
      91             :     AliMUONFastTracking& operator=(const AliMUONFastTracking & rhs);
      92             : };
      93             : 
      94             : #endif
      95             : 

Generated by: LCOV version 1.11