ROOT logo
#ifndef ALIT0PARAMETERS_H
#define ALIT0PARAMETERS_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
 * reserved. 
 *
 * Alla Maevskaya INR RAS alla@inr.ru
 *
 * See cxx source for full Copyright notice                               
 */

//____________________________________________________________________
//
//  Singleton class to handle various parameters of the
//  T0 - T0
//  Should get data fromm Conditions DB.
//
# include <TNamed.h>
# include <TF1.h>
# include <TMap.h>
# include <TGraph.h>
#include <TObjArray.h>
class AliT0CalibData;
class AliCDBEntry;
class AliT0CalibWalk;
class AliT0CalibTimeEq;
class AliT0CalibLatency;

class AliT0Parameters : public TNamed
{
public:
  static AliT0Parameters* Instance();
  
  AliT0Parameters();
  virtual ~AliT0Parameters() {};
 
  void Init();  
  void InitIfOnline();

  // Set various `Fixed' parameters 
  void SetPh2Mip(Int_t r=300)          { fPh2Mip = r; }
  void SetmV2Mip(Int_t r=50)          { fmV2Mip = r; }
  void SetChannelWidth(Float_t s=24.4)   { fChannelWidth = s;}
  void SetmV2channel(Int_t size=320) { fmV2Channel = size; }
  void SetQTmin(Int_t qt=13) {fQTmin = qt;}
  void SetQTmax(Int_t qt=125) {fQTmax = qt;}
  void SetZposition( Float_t valueC=69.7, Float_t valueA=373) {
    fT0zPosition[0]=valueC, fT0zPosition[1]=valueA;}
  void SetPMTeff(Int_t ipmt);  

  void SetTimeDelayTVD(Float_t r=150)   { fTimeDelayTVD = r; };
  Float_t GetTimeDelayTVD() const   { return fTimeDelayTVD; }

 
  // Get `Fixed' various parameters
  Int_t GetPh2Mip()          const { return fPh2Mip; }
  Int_t GetmV2Mip()          const { return fmV2Mip; }
  Float_t GetChannelWidth()     const { return fChannelWidth; }
  Int_t GetmV2channel()     const { return fmV2Channel; }
  Int_t GetQTmin() const {return fQTmin;}
  Int_t GetQTmax() const {return fQTmax;}
  Double_t GetZposition(Int_t i) const {return fT0zPosition[i];}
  Double_t GetZPosition(const char* symname) ;
  Double_t GetZPositionShift(const char* symname);



  TGraph *  GetPMTeff(Int_t ipmt) const  
  {return (TGraph*)fPMTeff.At(ipmt);}
  Float_t GetpmtEFF(Int_t ipmt, Float_t lambda) const
  {return((TGraph*)fPMTeff.At(ipmt))->Eval(lambda);} 


  TGraph *GetAmpLEDRec(Int_t ipmt) const;  
  TGraph *GetWalk(Int_t ipmt )  const;
  TGraph *GetQTC(Int_t ipmt) const;
  TGraph *GetAmpLED(Int_t ipmt) const;
   
  Float_t GetTimeDelayCFD(Int_t ipmt);
//  Float_t GetTimeV0(Int_t ipmt = 512) {return  fTimeV0;}
  Float_t GetCFD (Int_t ipmt);
  void SetMeanT0(Float_t mean=512) { fMeanT0 = mean; };
  Float_t GetMeanT0 () {return fMeanT0;};
  void SetMeanVertex(Float_t mean=0) { fMeanVertex = mean; };
   Float_t GetMeanVertex ();

  TMap * GetMapLookup();
  Int_t GetChannel(Int_t trm,  Int_t tdc, Int_t chain, Int_t channel);
  Int_t GetNumberOfTRMs();
  void SetNumberOfTRMs(Int_t ntrms=2) {fNumberOfTRMs = ntrms;}
 
  Float_t GetLatencyHPTDC();
  Float_t GetLatencyL1();/* {return fLatencyL1;} */
  Float_t GetLatencyL1A(); /* {return fLatencyL1A;}*/ 
  Float_t GetLatencyL1C(); /* {return fLatencyL1C;} */
 
  void SetLatencyHPTDC(Float_t lat) {fLatencyHPTDC=lat;} 
  void SetLatencyL1(Float_t lat) {fLatencyL1=lat;} 
  void SetLatencyL1A(Float_t lat) { fLatencyL1A=lat;} 
  void  SetLatencyL1C(Float_t lat) { fLatencyL1C=lat;} 

 protected:
  static AliT0Parameters* fgInstance; // Static singleton instance
  
  Bool_t    fIsInit;                // Whether we've been initialised
  Float_t   fT0zPosition[2] ;  // z-position of the two T0s
  Int_t     fPh2Mip;            // # photoelectrons per MIP in radiator
  Int_t     fmV2Mip;            // # mV per MIP in radiator
  Float_t     fChannelWidth;          // channel width in ns   
  Int_t     fmV2Channel;     // ADC mv  2  channel # (200000ps/(25*25).
  Int_t     fQTmin;                 //min  time for QTC
  Int_t     fQTmax;                 //max  time fro QTC 
  TObjArray fAmpLEDRec;  // array of amlitude vs LED-CFD (simulation & reconstruction)
  TObjArray fPMTeff; //array PMT registration efficiency
  TObjArray fWalk; //array time-amplitude walk
  TObjArray fQTC; //array of TGraphs for QTC vs number of MIPs
  TObjArray fAmpLED; //array of TGraphs for LED-CFD vs number of MIPs

  
  Float_t   fTimeDelayCFD;  // sum time delay for CFD channel
 // Float_t   fTimeV0;  // sum time delay for CFD channel
  Float_t   fTimeDelayTVD;  //time delay for TVD (vertex trigger channel)
  Float_t     fMeanT0; //mean of T0distribution with vertex=0;
  Float_t     fMeanVertex; // mean of vertex distribution;
   
  Float_t  fLatencyHPTDC; // all latencies;
  Float_t  fLatencyL1; // all latencies;
  Float_t  fLatencyL1A; // all latencies;
  Float_t  fLatencyL1C; // all latencies;
    
  TMap      fLookUp;           //lookup table
  Int_t     fNumberOfTRMs;    // number of TRMs in setup
  
  //latency


  static AliT0CalibTimeEq * fgCalibData; // singleton for Calibration data
  static AliT0CalibData * fgLookUp; // singleton for Calibration data
  static AliT0CalibWalk * fgSlewCorr; // singleton for Calibration data
  static AliT0CalibLatency * fgLatency; // singleton for Calibration data
  
  AliCDBEntry*   fCalibentry ;  // pointer to T0 calibration object
  AliCDBEntry*   fLookUpentry ;  // pointer to T0 lokkup table
  AliCDBEntry*   fSlewCorr ;  // pointer to slewing correction
  AliCDBEntry*   fLatency ;  // pointer to latency

 private:
  AliT0Parameters(const  AliT0Parameters&);
  AliT0Parameters& operator=(const AliT0Parameters&);
  
  ClassDef(AliT0Parameters,6)
 
};

#endif
//____________________________________________________________________

 AliT0Parameters.h:1
 AliT0Parameters.h:2
 AliT0Parameters.h:3
 AliT0Parameters.h:4
 AliT0Parameters.h:5
 AliT0Parameters.h:6
 AliT0Parameters.h:7
 AliT0Parameters.h:8
 AliT0Parameters.h:9
 AliT0Parameters.h:10
 AliT0Parameters.h:11
 AliT0Parameters.h:12
 AliT0Parameters.h:13
 AliT0Parameters.h:14
 AliT0Parameters.h:15
 AliT0Parameters.h:16
 AliT0Parameters.h:17
 AliT0Parameters.h:18
 AliT0Parameters.h:19
 AliT0Parameters.h:20
 AliT0Parameters.h:21
 AliT0Parameters.h:22
 AliT0Parameters.h:23
 AliT0Parameters.h:24
 AliT0Parameters.h:25
 AliT0Parameters.h:26
 AliT0Parameters.h:27
 AliT0Parameters.h:28
 AliT0Parameters.h:29
 AliT0Parameters.h:30
 AliT0Parameters.h:31
 AliT0Parameters.h:32
 AliT0Parameters.h:33
 AliT0Parameters.h:34
 AliT0Parameters.h:35
 AliT0Parameters.h:36
 AliT0Parameters.h:37
 AliT0Parameters.h:38
 AliT0Parameters.h:39
 AliT0Parameters.h:40
 AliT0Parameters.h:41
 AliT0Parameters.h:42
 AliT0Parameters.h:43
 AliT0Parameters.h:44
 AliT0Parameters.h:45
 AliT0Parameters.h:46
 AliT0Parameters.h:47
 AliT0Parameters.h:48
 AliT0Parameters.h:49
 AliT0Parameters.h:50
 AliT0Parameters.h:51
 AliT0Parameters.h:52
 AliT0Parameters.h:53
 AliT0Parameters.h:54
 AliT0Parameters.h:55
 AliT0Parameters.h:56
 AliT0Parameters.h:57
 AliT0Parameters.h:58
 AliT0Parameters.h:59
 AliT0Parameters.h:60
 AliT0Parameters.h:61
 AliT0Parameters.h:62
 AliT0Parameters.h:63
 AliT0Parameters.h:64
 AliT0Parameters.h:65
 AliT0Parameters.h:66
 AliT0Parameters.h:67
 AliT0Parameters.h:68
 AliT0Parameters.h:69
 AliT0Parameters.h:70
 AliT0Parameters.h:71
 AliT0Parameters.h:72
 AliT0Parameters.h:73
 AliT0Parameters.h:74
 AliT0Parameters.h:75
 AliT0Parameters.h:76
 AliT0Parameters.h:77
 AliT0Parameters.h:78
 AliT0Parameters.h:79
 AliT0Parameters.h:80
 AliT0Parameters.h:81
 AliT0Parameters.h:82
 AliT0Parameters.h:83
 AliT0Parameters.h:84
 AliT0Parameters.h:85
 AliT0Parameters.h:86
 AliT0Parameters.h:87
 AliT0Parameters.h:88
 AliT0Parameters.h:89
 AliT0Parameters.h:90
 AliT0Parameters.h:91
 AliT0Parameters.h:92
 AliT0Parameters.h:93
 AliT0Parameters.h:94
 AliT0Parameters.h:95
 AliT0Parameters.h:96
 AliT0Parameters.h:97
 AliT0Parameters.h:98
 AliT0Parameters.h:99
 AliT0Parameters.h:100
 AliT0Parameters.h:101
 AliT0Parameters.h:102
 AliT0Parameters.h:103
 AliT0Parameters.h:104
 AliT0Parameters.h:105
 AliT0Parameters.h:106
 AliT0Parameters.h:107
 AliT0Parameters.h:108
 AliT0Parameters.h:109
 AliT0Parameters.h:110
 AliT0Parameters.h:111
 AliT0Parameters.h:112
 AliT0Parameters.h:113
 AliT0Parameters.h:114
 AliT0Parameters.h:115
 AliT0Parameters.h:116
 AliT0Parameters.h:117
 AliT0Parameters.h:118
 AliT0Parameters.h:119
 AliT0Parameters.h:120
 AliT0Parameters.h:121
 AliT0Parameters.h:122
 AliT0Parameters.h:123
 AliT0Parameters.h:124
 AliT0Parameters.h:125
 AliT0Parameters.h:126
 AliT0Parameters.h:127
 AliT0Parameters.h:128
 AliT0Parameters.h:129
 AliT0Parameters.h:130
 AliT0Parameters.h:131
 AliT0Parameters.h:132
 AliT0Parameters.h:133
 AliT0Parameters.h:134
 AliT0Parameters.h:135
 AliT0Parameters.h:136
 AliT0Parameters.h:137
 AliT0Parameters.h:138
 AliT0Parameters.h:139
 AliT0Parameters.h:140
 AliT0Parameters.h:141
 AliT0Parameters.h:142
 AliT0Parameters.h:143
 AliT0Parameters.h:144
 AliT0Parameters.h:145
 AliT0Parameters.h:146
 AliT0Parameters.h:147
 AliT0Parameters.h:148
 AliT0Parameters.h:149
 AliT0Parameters.h:150
 AliT0Parameters.h:151
 AliT0Parameters.h:152
 AliT0Parameters.h:153
 AliT0Parameters.h:154
 AliT0Parameters.h:155
 AliT0Parameters.h:156