SPD calibration parameters used only in simulation moved to AliITSSimuParam (G. Bruno)
[u/mrichter/AliRoot.git] / ITS / AliITSCalibration.h
1 #ifndef ALIITSCALIBRATION_H
2 #define ALIITSCALIBRATION_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 // Base ITS calibration class               //
10 //////////////////////////////////////////////
11
12 #include <TObject.h>
13 #include <TString.h>
14 #include "AliLog.h"
15 #include "AliITSresponse.h"
16 #include "AliITSMapSDD.h"
17 #include "AliITSDriftSpeedArraySDD.h"
18
19 class AliITSsegmentation;
20 class TF1;
21 class AliITSgeom;
22
23
24 /////////////////////////////////////////////
25 //                                         //
26 // ITS calibration virtual base class      //
27 /////////////////////////////////////////////
28 class AliITSCalibration : public TObject {
29  public:
30     // Default Constructor
31     AliITSCalibration();
32
33     // Destructor.
34     virtual ~AliITSCalibration() {;}
35
36     // Check for dead modules anche chips
37     // Return 1 if the module/chip is dead, 0 if it is ok
38     virtual Bool_t IsBad() const {AliError("This method must be implemented in a derived class"); return kFALSE;}
39     virtual Bool_t IsChipBad(Int_t) const {AliError("This method must be implemented in a derived class"); return kFALSE;}
40     //
41     // Configuration methods
42     //
43     // Temperature in [degree K]
44     virtual void    SetTemperature(Double_t t=300.0) {fT = t;}
45     // Get temperature [degree K]
46     virtual Double_t Temperature() const {return fT;}
47  
48     // Get data type
49     virtual const char  *DataType() const {return fDataType.Data();}
50     // Type of data - real or simulated
51     virtual void    SetDataType(const char *data="simulated") {fDataType=data;}
52     // Set noise parameters 
53     virtual void   SetNoiseParam(Double_t, Double_t) = 0;
54     // Number of parameters to be set
55     virtual  void   SetNDetParam(Int_t) = 0;
56     // Set detector parameters: gain, coupling ...
57     virtual  void   SetDetParam(Double_t *) = 0;
58
59     virtual Int_t  NDetParam() const = 0;
60     virtual void   GetDetParam(Double_t *) const = 0;
61     virtual void   GetNoiseParam(Double_t&, Double_t&) const = 0;
62     virtual void   SetThresholds(Double_t, Double_t) = 0;
63     virtual void   Thresholds(Double_t &, Double_t &) const = 0;
64     virtual void   SetMapA(Int_t, AliITSMapSDD*) {AliError("This method must be implemented in a derived class");}
65     virtual void   SetMapT(Int_t, AliITSMapSDD*) {AliError("This method must be implemented in a derived class");}
66     virtual void   SetDriftSpeed(Int_t, AliITSDriftSpeedArraySDD*) {AliError("This method must be implemented in a derived class");}
67     // Set sigmas of the charge spread function
68     virtual void    SetSigmaSpread(Double_t, Double_t) = 0;
69     // Get sigmas for the charge spread
70     virtual void    SigmaSpread(Double_t &,Double_t &) const = 0;
71
72
73
74     // Prints out the content of this class in ASCII format.
75     virtual void Print(ostream *os) const;
76     // Reads in the content of this class in the format of Print
77     virtual void Read(istream *is);
78     virtual void Print(Option_t *option="") const {TObject::Print(option);}
79     virtual Int_t Read(const char *name) {return TObject::Read(name);}
80
81     void SetResponse(AliITSresponse* response) {fResponse=response;}
82     AliITSresponse* GetResponse() const {return fResponse;}
83
84     virtual void SetDiffCoeff(Float_t p1, Float_t p2) {fResponse->SetDiffCoeff(p1,p2);}
85     virtual void DiffCoeff(Float_t &diff,Float_t &diff1) const {fResponse->DiffCoeff(diff,diff1);} 
86
87  protected:
88     AliITSCalibration(const AliITSCalibration &ob); // copy constructor
89     AliITSCalibration& operator=(const AliITSCalibration& source); // ass.
90     void NotImplemented(const char *method) const {if(gDebug>0)
91          Warning(method,"This method is not implemented for this sub-class");}
92
93     TString  fDataType;   // data type - real or simulated
94     
95     Float_t fT;   // The temperature of the Si in Degree K.
96     AliITSresponse* fResponse; //! ptr to base response obj. It is not
97                  // deleted here but in AliITSDetTypeSim and AliITSDetTypeRec
98
99     ClassDef(AliITSCalibration,2) // Detector type response virtual base class 
100 };
101 // Input and output function for standard C++ input/output.
102 ostream& operator<<(ostream &os,AliITSCalibration &source);
103 istream& operator>>(istream &os,AliITSCalibration &source);
104 #endif