1 #ifndef ALIITSPLANEEFF_H
2 #define ALIITSPLANEEFF_H
3 /* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
10 class AliITSsegmentation;
14 ////////////////////////////////////////////////////
16 // ITS virtual base class for Plane Efficiency //
18 ////////////////////////////////////////////////////
22 class AliITSPlaneEff : public TObject {
25 AliITSPlaneEff();// Default constructor
26 // Standard constructor
27 //AliITSPlaneEff(AliITSDetTypeSim *dettyp);
28 virtual ~AliITSPlaneEff(){;};
29 // copy constructor. See detector specific implementation.
30 AliITSPlaneEff(const AliITSPlaneEff &source);
31 // Assignment operator. See detector specific implementation.
32 virtual AliITSPlaneEff& operator=(const AliITSPlaneEff &source);
33 // Simple way to add another class (i.e. statistics).
34 //AliITSPlaneEff& operator +=( const AliITSPlaneEff &){return *this};
35 // Average Plane efficiency (including dead/noisy)
36 Int_t GetRunNumber() const {return fRunNumber;}
37 void SetRunNumber(Int_t n) {fRunNumber=n;}
39 Double_t PlaneEff(Int_t nfound,Int_t ntried) const;
40 Double_t ErrPlaneEff(Int_t nfound,Int_t ntried) const;
41 virtual void GetPlaneEff(Int_t nfound,Int_t ntried,Double_t &eff, Double_t &err) const
42 {eff=PlaneEff(nfound,ntried); err=ErrPlaneEff(nfound,ntried); return;};
43 // Plane efficiency for active detector (excluding dead/noisy channels)
44 virtual Double_t LivePlaneEff(UInt_t) const
45 {AliError("This method must be implemented in a derived class"); return -1.;};
46 virtual Double_t ErrLivePlaneEff(UInt_t) const
47 {AliError("This method must be implemented in a derived class"); return -1.;};
48 // Compute the fraction of Live detector
49 virtual Double_t GetFracLive(const UInt_t) const
50 {AliError("This method must be implemented in a derived class"); return -1.;};
51 // Compute the fraction of Bad (i.e. dead + noisy) detector
52 virtual Double_t GetFracBad(const UInt_t) const
53 {AliError("This method must be implemented in a derived class"); return -1.;};
54 // Update the Counting of the plane efficiency
55 virtual Bool_t UpDatePlaneEff(const Bool_t, const UInt_t)
56 {AliError("This method must be implemented in a derived class"); return kFALSE;};
57 // Estimate of the number of tracks needed for measuring efficiency within RelErr
58 virtual Int_t GetNTracksForGivenEff(Double_t eff, Double_t RelErr) const;
59 void SetDefaultStorage(const char* uri);
60 // Write into the data base
61 virtual Bool_t WriteIntoCDB() const
62 {AliError("This method must be implemented in a derived class"); return kFALSE;};
63 virtual Bool_t ReadFromCDB()
64 {AliError("This method must be implemented in a derived class"); return kFALSE;};
65 virtual Bool_t AddFromCDB()
66 {AliError("This method must be implemented in a derived class"); return kFALSE;};
71 virtual void Copy(TObject &obj) const;
72 void NotImplemented(const char *method) const {if(gDebug>0)
73 Warning(method,"This method is not implemented for this sub-class");}
74 Int_t fRunNumber; //! run number (to access CDB)
75 TString fCDBUri; //! Uri of the default CDB storage
76 Bool_t fInitCDBCalled; //! flag to check if CDB storages are already initialized
79 //Int_t* fFound; // number of associated clusters into a given block (e.g. SPD 1200 chip)
80 //Int_t* fTries; // number of exspected clusters into a given block (e.g. SPD 1200 chip)
81 //Int_t fRunNumber; // run number (to access CDB)
83 ClassDef(AliITSPlaneEff,1) // ITS Plane Efficiency virtual base class