LCOV - code coverage report
Current view: top level - STEER/STEERBase - AliHMPIDPIDResponse.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 13 7.7 %
Date: 2016-06-14 17:26:59 Functions: 1 17 5.9 %

          Line data    Source code
       1             : #ifndef ALIHMPIDPIDRESPONSE_H
       2             : #define ALIHMPIDPIDRESPONSE_H
       3             : 
       4             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       5             :  * See cxx source for full Copyright notice                               */
       6             : 
       7             : //***********************************************************
       8             : // Class AliHMPIDPIDResponse
       9             : //
      10             : // HMPID class to perfom particle identification
      11             : // 
      12             : // Author: G. Volpe, giacomo.volpe@cern.ch
      13             : //***********************************************************
      14             : 
      15             : 
      16             : #include <TNamed.h>          //base class
      17             : #include <TVector3.h>
      18             : #include <TVector2.h>
      19             : 
      20             : #include "AliPID.h"
      21             :         
      22             : class AliVTrack;
      23             : class TObjArray;
      24             : class TGeoHMatrix;
      25             : 
      26             : class AliHMPIDPIDResponse : public TNamed 
      27             : {
      28             : public : 
      29             :              AliHMPIDPIDResponse();    //ctor
      30             :              AliHMPIDPIDResponse(const AliHMPIDPIDResponse& c);                //copy constructor
      31             :              AliHMPIDPIDResponse &operator=(const AliHMPIDPIDResponse& c);     //dummy assignment operator
      32             :              virtual ~AliHMPIDPIDResponse();
      33             :     
      34             :     enum EChamberData{kMinCh=0,kMaxCh=6,kMinPc=0,kMaxPc=5};      //Segmenation
      35             :     enum EPadxData{kPadPcX=80,kMinPx=0,kMaxPx=79,kMaxPcx=159};   //Segmentation structure along x
      36             :     enum EPadyData{kPadPcY=48,kMinPy=0,kMaxPy=47,kMaxPcy=143};   //Segmentation structure along y 
      37             :     
      38             :     Double_t GetExpectedSignal  (const AliVTrack *vTrk, AliPID::EParticleType specie                 ) const;
      39             :     Double_t GetExpectedSigma   (const AliVTrack *vTrk, AliPID::EParticleType specie                 ) const;                                                                     //Find the sigma for a given ThetaCerTh
      40             :     Double_t GetNumberOfSigmas  (const AliVTrack *vTrk, AliPID::EParticleType specie                 ) const;                                                                     //Find the expected Cherenkov angle for a given track
      41             :     void     GetProbability     (const AliVTrack *vTrk, Int_t nSpecies,Double_t *prob                ) const;                                                                     //Find the PID probability array
      42             :     Double_t GetSignalDelta     (const AliVTrack *vTrk, AliPID::EParticleType specie, Bool_t ratio=kFALSE) const;    
      43             :     void     Propagate          (const TVector3  dir,   TVector3 &pos,  Double_t z                   ) const;                                                                     //propagate photon alogn the line  
      44             :     void     Refract            (TVector3 &dir,         Double_t n1,    Double_t n2                  ) const;                                                                     //refract photon on the boundary
      45             :     TVector2 TracePhot          (Double_t xRa, Double_t yRa,  Double_t thRa, Double_t phRa, Double_t ckovThe,Double_t ckovPhi) const;                                             //trace photon created by track to PC 
      46             :     void     Trs2Lors           (Double_t thRa, Double_t phRa, TVector3 dirCkov,      Double_t &thetaCer,Double_t &phiCer) const;                                                 //TRS to LORS
      47             :     TVector2 TraceForward       (Double_t xRa, Double_t yRa, TVector3 dirCkov                        ) const;                                                                     //tracing forward a photon from (x,y) to PC
      48           0 :     void     SetTrack           (Double_t xRad,         Double_t yRad,  Double_t theta,Double_t phi  )       {fTrkDir.SetMagThetaPhi(1,theta,phi);  fTrkPos.Set(xRad,yRad);}      //set track parameter at RAD
      49           0 :     Double_t RadThick           (                                                                    ) const {return 1.5;}                                                        //Radiator thickness
      50           0 :     Double_t WinThick           (                                                                    ) const {return 0.5;}                                                        //Window thickness
      51           0 :     Double_t GapThick           (                                                                    ) const {return 8.0;}                                                        //Proximity gap thicknes
      52           0 :     Double_t GetRefIdx          (                                                                    ) const {return fRefIdx;}                                                    //running refractive index
      53           0 :     Double_t WinIdx             (                                                                    ) const {return 1.5787;}                                                     //Mean refractive index of WIN material (SiO2) 
      54           0 :     Double_t GapIdx             (                                                                    ) const {return 1.0005;}                                                     //Mean refractive index of GAP material (CH4)
      55           0 :     static Bool_t  IsInside     (Float_t x,Float_t y,Float_t d=0                                     )       {return  x>-d&&y>-d&&x<fgkMaxPcX[kMaxPc]+d&&y<fgkMaxPcY[kMaxPc]+d; } //is point inside chamber boundaries?
      56             :     static Bool_t  IsInDead     (Float_t x,Float_t y                                                 );                                                                           //is the point in a dead area?
      57           0 :     static Float_t SizeAllX     (                                                                    )       {return fgAllX;}                                                     //all PCs size x, [cm]        
      58           0 :     static Float_t SizeAllY     (                                                                    )       {return fgAllY;}                                                     //all PCs size y, [cm]    
      59             :     static void    IdealPosition(Int_t iCh,TGeoHMatrix *m                                            );                                                                           //ideal position of given chamber 
      60             :         
      61             :     Double_t SigLoc             (Double_t trkTheta,Double_t trkPhi,Double_t ckovTh,Double_t ckovPh,Double_t beta) const;                                                          //error due to cathode segmetation
      62             :     Double_t SigGeom            (Double_t trkTheta,Double_t trkPhi,Double_t ckovTh,Double_t ckovPh,Double_t beta) const;                                                          //error due to unknown photon origin
      63             :     Double_t SigCrom            (Double_t trkTheta,Double_t ckovTh,Double_t ckovPh,Double_t beta                ) const;                                                          //error due to unknonw photon energy
      64             :     Double_t Sigma2             (Double_t trkTheta,Double_t trkPhi,Double_t ckovTh,Double_t ckovPh              ) const;                                                          //photon candidate sigma^2  
      65             :     Double_t GetNMean           (const AliVTrack *vTrk                                                          ) const;
      66             :     static Double_t SigmaCorrFact(Int_t iPart, Double_t occupancy                                               )      ;                                                          //correction factor for theoretical resolution
      67             :     
      68           0 :     void SetRefIndexArray       (TObjArray *array                                                     )       {fRefIndexArray = array;}
      69           0 :     TObjArray* GetRefIndexArray (                                                                     ) const {return fRefIndexArray;}
      70             : 
      71             : //
      72             : private:
      73             :         
      74             :     Double_t ExpectedSignal     (const AliVTrack *vTrk, Double_t nmean, AliPID::EParticleType specie ) const;
      75             :     Double_t ExpectedSigma      (const AliVTrack *vTrk, Double_t nmean, AliPID::EParticleType specie ) const;                                                                     //Find the sigma for a given ThetaCerTh
      76             :     
      77             : protected:
      78             : 
      79             :   static /*const*/ Float_t fgkMinPcX[6];                               //limits PC
      80             :   static /*const*/ Float_t fgkMinPcY[6];                               //limits PC
      81             :   static /*const*/ Float_t fgkMaxPcX[6];                               //limits PC
      82             :   static /*const*/ Float_t fgkMaxPcY[6]; 
      83             :           
      84             :   static Float_t fgCellX, fgCellY, fgPcX, fgPcY, fgAllX, fgAllY;       //definition of HMPID geometric parameters 
      85             :         
      86             :   TGeoHMatrix *fM[7];                                                  //pointers to matrices defining HMPID chambers rotations-translations
      87             :   
      88             :   Double_t  fRefIdx;                                                   //running refractive index of C6F14
      89             :   TVector3  fTrkDir;                                                   //track direction in LORS at RAD
      90             :   TVector2  fTrkPos;                                                   //track positon in LORS at RAD
      91             :   TObjArray *fRefIndexArray;                                           //array of refracive index funxtion;
      92             :   
      93         176 :   ClassDef(AliHMPIDPIDResponse,1)
      94             : };
      95             : #endif // #ifdef AliHMPIDPIDResponse_cxx
      96             : 

Generated by: LCOV version 1.11