LCOV - code coverage report
Current view: top level - TOF/TOFsim - AliTOFSDigitizer.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 67 1.5 %
Date: 2016-06-14 17:26:59 Functions: 2 71 2.8 %

          Line data    Source code
       1             : #ifndef ALITOFSDIGITIZER_H
       2             : #define ALITOFSDIGITIZER_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             : //                                          //
       9             : //       Class for making SDigits in TOF    // 
      10             : //                                          //
      11             : //-- Authors: F. Pierella, A. De Caro       //
      12             : //                                          //
      13             : //__________________________________________//
      14             : 
      15             : /* $Id$ */
      16             : 
      17             : #include "TNamed.h"
      18             : 
      19             : class TF1;
      20             : class TString;
      21             : 
      22             : class AliLoader;
      23             : class AliRunLoader;
      24             : 
      25             : class AliTOFcalib;
      26             : 
      27             : class AliTOFSDigitizer: public TNamed {
      28             : 
      29             : public:
      30             :   AliTOFSDigitizer() ;          // ctor
      31             :   //AliTOFSDigitizer(const char* HeaderFile) ; // par ctor
      32             :   AliTOFSDigitizer(const char* HeaderFile, Int_t evNumber1=-1, Int_t nEvents=0) ; // par ctor
      33             : 
      34             :   AliTOFSDigitizer(const AliTOFSDigitizer &source); // copy constructor
      35             :   AliTOFSDigitizer& operator=(const AliTOFSDigitizer &/*source*/); // ass. op.
      36             : 
      37             :   virtual ~AliTOFSDigitizer() ; // dtor
      38             : 
      39             :   //static Float_t WidthTdcBin() {return fgkTdcBin;};
      40             : 
      41             :   virtual void  Digitize(Option_t *verboseOption); 
      42           0 :   void SetSDigitsFile(char * /*file*/ ) const {;}
      43             :   
      44             :   void InitParameters();
      45             :   virtual void PrintParameters() const ;
      46             :   virtual void SimulateDetectorResponse(Float_t z0, Float_t x0, Float_t geantTime, Int_t& nActivatedPads, Int_t& nFiredPads, Bool_t* isFired, Int_t* nPlace, Float_t* qInduced, Float_t* tofTime, Float_t& averageTime);
      47             :   virtual void SimulateDetectorResponseOLD(Float_t z0, Float_t x0, Float_t geantTime, Int_t& nActivatedPads, Int_t& nFiredPads, Bool_t* isFired, Int_t* nPlace, Float_t* qInduced, Float_t* tofTime, Float_t& averageTime);
      48             :   virtual void Print(Option_t* opt) const ;
      49           0 :   void  SetFirstEvent(Int_t event1)      {fEvent1 = event1;}
      50           0 :   void  SetSecondEvent(Int_t event2)     {fEvent2 = event2;}
      51           0 :   Int_t GetFirstEvent()  const {return fEvent1;}
      52           0 :   Int_t GetSecondEvent() const {return fEvent2;}
      53           0 :   Int_t GetNEvents() const {return (fEvent2-fEvent1);}
      54             :   void  SelectSectorAndPlate(Int_t sector, Int_t plate);
      55             : 
      56             :   // setters and getters for detector simulation
      57             :   // it summarizes all it is known about TOF strip 
      58           0 :   void  SetPadefficiency(Float_t padefficiency)      {fpadefficiency=padefficiency;}
      59           0 :   void  SetEdgeEffect(Int_t   edgeEffect)            {fEdgeEffect=edgeEffect;}
      60           0 :   void  SetEdgeTails(Int_t   edgeTails)              {fEdgeTails=edgeTails;}
      61           0 :   void  SetHparameter(Float_t hparameter)            {fHparameter=hparameter;}
      62           0 :   void  SetH2parameter(Float_t h2parameter)          {fH2parameter=h2parameter;}
      63           0 :   void  SetKparameter(Float_t kparameter)            {fKparameter=kparameter;}
      64           0 :   void  SetK2parameter(Float_t k2parameter)          {fK2parameter=k2parameter;}
      65           0 :   void  SetEffCenter(Float_t effCenter)              {fEffCenter=effCenter;}
      66           0 :   void  SetEffBoundary(Float_t effBoundary)          {fEffBoundary=effBoundary;}
      67           0 :   void  SetEff2Boundary(Float_t eff2Boundary)        {fEff2Boundary=eff2Boundary;}
      68           0 :   void  SetEff3Boundary(Float_t eff3Boundary)        {fEff3Boundary=eff3Boundary;}
      69           0 :   void  SetAddTRes(Float_t addTRes)                  {fAddTRes=addTRes;}
      70           0 :   void  SetResCenter (Float_t resCenter)             {fResCenter=resCenter;}
      71           0 :   void  SetResBoundary(Float_t resBoundary)          {fResBoundary=resBoundary;}
      72           0 :   void  SetResSlope(Float_t resSlope)                {fResSlope=resSlope;}
      73           0 :   void  SetTimeWalkCenter(Float_t timeWalkCenter)    {fTimeWalkCenter=timeWalkCenter;}
      74           0 :   void  SetTimeWalkBoundary(Float_t timeWalkBoundary){fTimeWalkBoundary=timeWalkBoundary;}
      75           0 :   void  SetTimeWalkSlope(Float_t timeWalkSlope)      {fTimeWalkSlope=timeWalkSlope;}
      76             : 
      77           0 :   void  SetTimeDelayFlag(Int_t timeDelayFlag)        {fTimeDelayFlag=timeDelayFlag;}
      78           0 :   void  SetPulseHeightSlope(Float_t pulseHeightSlope){fPulseHeightSlope=pulseHeightSlope;}
      79           0 :   void  SetTimeDelaySlope(Float_t timeDelaySlope)    {fTimeDelaySlope=timeDelaySlope;}
      80           0 :   void  SetMinimumCharge(Float_t minimumCharge)      {fMinimumCharge=minimumCharge;}
      81           0 :   void  SetChargeSmearing(Float_t chargeSmearing)    {fChargeSmearing=chargeSmearing;}
      82           0 :   void  SetLogChargeSmearing(Float_t logChargeSmearing){fLogChargeSmearing=logChargeSmearing;}
      83           0 :   void  SetTimeSmearing(Float_t timeSmearing)        {fTimeSmearing=timeSmearing;}
      84           0 :   void  SetAverageTimeFlag(Int_t averageTimeFlag)    {fAverageTimeFlag=averageTimeFlag;}
      85             : 
      86           0 :   void  SetAdcBin(Float_t adcBin)                    {fAdcBin=adcBin;}
      87           0 :   void  SetAdcMean(Float_t adcMean)                  {fAdcMean=adcMean;}
      88           0 :   void  SetAdcRms(Float_t adcRms)                    {fAdcRms=adcRms;}
      89             : 
      90           0 :   void SetTimeResolution(Float_t time) {fTimeResolution=time;}
      91             : 
      92           0 :   Float_t  GetPadefficiency()    const {return fpadefficiency;}
      93           0 :   Int_t    GetEdgeEffect()       const {return fEdgeEffect;}
      94           0 :   Int_t    GetEdgeTails()        const {return fEdgeTails;}
      95           0 :   Float_t  GetHparameter()       const {return fHparameter;}
      96           0 :   Float_t  GetH2parameter()      const {return fH2parameter;}
      97           0 :   Float_t  GetKparameter()       const {return fKparameter;}
      98           0 :   Float_t  GetK2parameter()      const {return fK2parameter;}
      99           0 :   Float_t  GetEffCenter()        const {return fEffCenter;}
     100           0 :   Float_t  GetEffBoundary()      const {return fEffBoundary;}
     101           0 :   Float_t  GetEff2Boundary()     const {return fEff2Boundary;}
     102           0 :   Float_t  GetEff3Boundary()     const {return fEff3Boundary;}
     103           0 :   Float_t  GetAddTRes ()         const {return fAddTRes;}
     104           0 :   Float_t  GetResCenter ()       const {return fResCenter;}
     105           0 :   Float_t  GetResBoundary()      const {return fResBoundary;}
     106           0 :   Float_t  GetResSlope()         const {return fResSlope;}
     107           0 :   Float_t  GetTimeWalkCenter()   const {return fTimeWalkCenter;}
     108           0 :   Float_t  GetTimeWalkBoundary() const {return fTimeWalkBoundary;}
     109           0 :   Float_t  GetTimeWalkSlope()    const {return fTimeWalkSlope;}
     110           0 :   Int_t    GetTimeDelayFlag()    const {return fTimeDelayFlag;}
     111           0 :   Float_t  GetPulseHeightSlope() const {return fPulseHeightSlope;}
     112           0 :   Float_t  GetTimeDelaySlope()   const {return fTimeDelaySlope;}
     113           0 :   Float_t  GetMinimumCharge()    const {return fMinimumCharge;}
     114           0 :   Float_t  GetChargeSmearing()   const {return fChargeSmearing;}
     115           0 :   Float_t  GetLogChargeSmearing()const {return fLogChargeSmearing;}
     116           0 :   Float_t  GetTimeSmearing()     const {return fTimeSmearing;}
     117           0 :   Int_t    GetAverageTimeFlag()  const {return fAverageTimeFlag;}
     118             : 
     119           0 :   Float_t  GetAdcBin()           const {return fAdcBin;}
     120           0 :   Float_t  GetAdcMean()          const {return fAdcMean;}
     121           0 :   Float_t  GetAdcRms()           const {return fAdcRms;}
     122             :   
     123           0 :   Float_t  GetTimeResolution()  const {return fTimeResolution;}
     124             : 
     125             : 
     126             : protected:
     127             : 
     128             : 
     129             : private:
     130             :   Int_t   fEvent1;          // lower bound for events to sdigitize
     131             :   Int_t   fEvent2;          // upper bound for events to sdigitize
     132             :   TF1     *ftail;           // pointer to formula for time with tail
     133             :   TString fHeadersFile;     // input file
     134             :   AliRunLoader* fRunLoader; //! Run Loader
     135             :   AliLoader* fTOFLoader;    //! Loader
     136             : 
     137             :   Int_t fSelectedSector;    // sector number for sdigitization
     138             :   Int_t fSelectedPlate ;    // plate  number for sdigitization
     139             : 
     140             :   // detector response simulation
     141             :   // Intrisic MRPC time resolution and pad (edge effect) parameters
     142             :   Float_t fTimeResolution;   // time resolution (ps)
     143             :   Float_t fpadefficiency;   // intrinsic pad efficiency, used if fEdgeEffect==0
     144             :   Int_t   fEdgeEffect;      // edge effects option
     145             :   Int_t   fEdgeTails;       // edge tails option
     146             :   Float_t fHparameter;      // sensitive edge (to produce hits on the neighbouring pads)
     147             :                             //                 0.7 cm (old); 0.4 cm (new)
     148             :   Float_t fH2parameter;     // parameter to fit the efficiency
     149             :   Float_t fKparameter;      // sensitive edge (going ahead towards the center
     150             :                             // no delay effects are suffered) 1.0 cm (old); 0.5 cm (new)
     151             :   Float_t fK2parameter;     // parameter to fit the efficiency
     152             :   // Pad Efficiency and Resolution parameters
     153             :   Float_t fEffCenter;       // efficiency in the central region of the pad
     154             :   Float_t fEffBoundary;     // efficiency at the boundary of the pad
     155             :   Float_t fEff2Boundary;    // efficiency value at H2parameter
     156             :   Float_t fEff3Boundary;    // efficiency value at K2parameter
     157             :   Float_t fAddTRes;         // additional contribution to 
     158             :                             // the intrinsic MRPC time resolution (ps)
     159             :   Float_t fResCenter;       // resolution (ps) in the central region of the pad
     160             :   Float_t fResBoundary;     // resolution (ps)  at the boundary of the pad
     161             :   Float_t fResSlope;        // slope (ps/K) for neighbouring pad
     162             :   // Time Walk parameters
     163             :   Float_t fTimeWalkCenter;  // time walk (ps) in the central region of the pad
     164             :   Float_t fTimeWalkBoundary;// time walk (ps) at the boundary of the pad
     165             :   Float_t fTimeWalkSlope;   // slope (ps/K) for neighbouring pad
     166             :   Int_t   fTimeDelayFlag;   // flag for delay due to the PulseHeightEffect
     167             :   Float_t fPulseHeightSlope;// It determines the charge amount induced
     168             :   // due to edge effect, using the formula
     169             :   // qInduced=exp(-PulseHeightSlope*x)
     170             :   Float_t fTimeDelaySlope;  // It determines the time delay. This is the slope
     171             :   // in the T1-T2 vs log(q1/q2) plot
     172             :   // ADC-TDC correlation parameters
     173             :   Float_t fMinimumCharge;   // Minimum charge amount which could be induced
     174             :   Float_t fChargeSmearing;  // Smearing in charge in (q1/q2) vs x plot
     175             :   Float_t fLogChargeSmearing;// Smearing in log of charge ratio
     176             :   Float_t fTimeSmearing;    // Smearing in time in time vs log(q1/q2) plot
     177             :   Int_t   fAverageTimeFlag; // flag (see the setter for details)
     178             : 
     179             :   Float_t fAdcBin;      // charge-window for the ADC bins [pC]
     180             :   Float_t fAdcMean;     // mean value for the ADC spectrum [bins]
     181             :   Float_t fAdcRms;      // rms value for the ADC spectrum [bins]
     182             : 
     183             :   AliTOFcalib * fCalib; //! calibration object
     184             : 
     185         316 :   ClassDef(AliTOFSDigitizer,5)  // creates TOF SDigits
     186             : 
     187             : };
     188             : 
     189             : #endif // AliTOFSDIGITIZER_H

Generated by: LCOV version 1.11