ROOT logo
#ifndef ALIITSCALIBRATION_H
#define ALIITSCALIBRATION_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

//////////////////////////////////////////////
// Base ITS calibration class               //
//////////////////////////////////////////////

#include <TObject.h>
#include <TString.h>
#include "AliLog.h"
#include "AliITSCorrMapSDD.h"
#include "AliITSDriftSpeedArraySDD.h"

class AliITSsegmentation;
class TF1;
class AliITSgeom;

using std::istream;

/////////////////////////////////////////////
//                                         //
// ITS calibration virtual base class      //
/////////////////////////////////////////////
class AliITSCalibration : public TObject {
 public:
    // Default Constructor
    AliITSCalibration();

    // Destructor.
    virtual ~AliITSCalibration() {;}

    // Check for dead modules anche chips
    // Return 1 if the module/chip is dead, 0 if it is ok
    virtual Bool_t IsBad() const {AliError("This method must be implemented in a derived class"); return kFALSE;}
    virtual Bool_t IsChipBad(Int_t) const {AliError("This method must be implemented in a derived class"); return kFALSE;}
    virtual Bool_t IsWingBad(Int_t) const {AliError("This method must be implemented in a derived class"); return kFALSE;}
    //
    // Configuration methods
    //
    // Temperature in [degree K]
    virtual void    SetTemperature(Double_t t=300.0) {fT = t;}
    // Get temperature [degree K]
    virtual Double_t Temperature() const {return fT;}
 
    // Get data type
    virtual const char  *DataType() const {return fDataType.Data();}
    // Type of data - real or simulated
    virtual void    SetDataType(const char *data="simulated") {fDataType=data;}
    // Number of parameters to be set
    virtual  void   SetNDetParam(Int_t) = 0;
    // Set detector parameters: gain, coupling ...
    virtual  void   SetDetParam(Double_t *) = 0;

    virtual Int_t  NDetParam() const = 0;
    virtual void   GetDetParam(Double_t *) const = 0;
    virtual void   SetMapA(Int_t, AliITSCorrMapSDD*) {AliError("This method must be implemented in a derived class");}
    virtual void   SetMapT(Int_t, AliITSCorrMapSDD*) {AliError("This method must be implemented in a derived class");}
    virtual void   SetDriftSpeed(Int_t, AliITSDriftSpeedArraySDD*) {AliError("This method must be implemented in a derived class");}
    // Set sigmas of the charge spread function
    virtual void    SetSigmaSpread(Double_t, Double_t) = 0;
    // Get sigmas for the charge spread
    virtual void    SigmaSpread(Double_t &,Double_t &) const = 0;

    // Needed for SSD bad modules retrieval in the tracker
    virtual void    SetModuleIndex(Int_t /*modId*/) {};

    // Prints out the content of this class in ASCII format.
    virtual void Print(ostream *os) const;
    // Reads in the content of this class in the format of Print
    virtual void Read(istream *is);
    virtual void Print(Option_t *option="") const {TObject::Print(option);}
    virtual Int_t Read(const char *name) {return TObject::Read(name);}


 protected:
    AliITSCalibration(const AliITSCalibration &ob); // copy constructor
    AliITSCalibration& operator=(const AliITSCalibration& source); // ass.
    void NotImplemented(const char *method) const {if(gDebug>0)
         Warning(method,"This method is not implemented for this sub-class");}

    TString  fDataType;   // data type - real or simulated
    
    Float_t fT;   // The temperature of the Si in Degree K.
                 // deleted here but in AliITSDetTypeSim and AliITSDetTypeRec

    ClassDef(AliITSCalibration,3) // Detector type response virtual base class 
};
// Input and output function for standard C++ input/output.
ostream& operator<<(ostream &os,AliITSCalibration &source);
istream& operator>>(istream &os,AliITSCalibration &source);
#endif
 AliITSCalibration.h:1
 AliITSCalibration.h:2
 AliITSCalibration.h:3
 AliITSCalibration.h:4
 AliITSCalibration.h:5
 AliITSCalibration.h:6
 AliITSCalibration.h:7
 AliITSCalibration.h:8
 AliITSCalibration.h:9
 AliITSCalibration.h:10
 AliITSCalibration.h:11
 AliITSCalibration.h:12
 AliITSCalibration.h:13
 AliITSCalibration.h:14
 AliITSCalibration.h:15
 AliITSCalibration.h:16
 AliITSCalibration.h:17
 AliITSCalibration.h:18
 AliITSCalibration.h:19
 AliITSCalibration.h:20
 AliITSCalibration.h:21
 AliITSCalibration.h:22
 AliITSCalibration.h:23
 AliITSCalibration.h:24
 AliITSCalibration.h:25
 AliITSCalibration.h:26
 AliITSCalibration.h:27
 AliITSCalibration.h:28
 AliITSCalibration.h:29
 AliITSCalibration.h:30
 AliITSCalibration.h:31
 AliITSCalibration.h:32
 AliITSCalibration.h:33
 AliITSCalibration.h:34
 AliITSCalibration.h:35
 AliITSCalibration.h:36
 AliITSCalibration.h:37
 AliITSCalibration.h:38
 AliITSCalibration.h:39
 AliITSCalibration.h:40
 AliITSCalibration.h:41
 AliITSCalibration.h:42
 AliITSCalibration.h:43
 AliITSCalibration.h:44
 AliITSCalibration.h:45
 AliITSCalibration.h:46
 AliITSCalibration.h:47
 AliITSCalibration.h:48
 AliITSCalibration.h:49
 AliITSCalibration.h:50
 AliITSCalibration.h:51
 AliITSCalibration.h:52
 AliITSCalibration.h:53
 AliITSCalibration.h:54
 AliITSCalibration.h:55
 AliITSCalibration.h:56
 AliITSCalibration.h:57
 AliITSCalibration.h:58
 AliITSCalibration.h:59
 AliITSCalibration.h:60
 AliITSCalibration.h:61
 AliITSCalibration.h:62
 AliITSCalibration.h:63
 AliITSCalibration.h:64
 AliITSCalibration.h:65
 AliITSCalibration.h:66
 AliITSCalibration.h:67
 AliITSCalibration.h:68
 AliITSCalibration.h:69
 AliITSCalibration.h:70
 AliITSCalibration.h:71
 AliITSCalibration.h:72
 AliITSCalibration.h:73
 AliITSCalibration.h:74
 AliITSCalibration.h:75
 AliITSCalibration.h:76
 AliITSCalibration.h:77
 AliITSCalibration.h:78
 AliITSCalibration.h:79
 AliITSCalibration.h:80
 AliITSCalibration.h:81
 AliITSCalibration.h:82
 AliITSCalibration.h:83
 AliITSCalibration.h:84
 AliITSCalibration.h:85
 AliITSCalibration.h:86
 AliITSCalibration.h:87
 AliITSCalibration.h:88
 AliITSCalibration.h:89
 AliITSCalibration.h:90
 AliITSCalibration.h:91
 AliITSCalibration.h:92
 AliITSCalibration.h:93
 AliITSCalibration.h:94
 AliITSCalibration.h:95