Line data Source code
1 : #ifndef ALIBASECALIBVIEWER_H
2 : #define ALIBASECALIBVIEWER_H
3 :
4 : ///////////////////////////////////////////////////////////////////////////////
5 : // //
6 : // Base class for the AliTPCCalibViewer and AliTRDCalibViewer //
7 : // used for the calibration monitor //
8 : // //
9 : ///////////////////////////////////////////////////////////////////////////////
10 :
11 : #include <TObject.h>
12 : #include <TTree.h>
13 : #include <TFile.h>
14 : #include "TFriendElement.h"
15 :
16 : #include "AliMathBase.h"
17 :
18 : class TLegend;
19 :
20 : class AliBaseCalibViewer : public TObject {
21 : public:
22 : AliBaseCalibViewer();
23 : AliBaseCalibViewer(const AliBaseCalibViewer &c);
24 : AliBaseCalibViewer(TTree* tree);
25 : AliBaseCalibViewer(const Char_t* fileName, const Char_t* treeName = "tree");
26 : AliBaseCalibViewer &operator = (const AliBaseCalibViewer & param);
27 : virtual ~AliBaseCalibViewer();
28 : virtual void Delete(Option_t* option = "");
29 :
30 0 : TString& GetAbbreviation() { return fAbbreviation; }
31 0 : TString& GetAppendString() { return fAppendString; }
32 0 : void SetAbbreviation(const Char_t* abr) { fAbbreviation = abr; }
33 0 : void SetAppendString(const Char_t* str) { fAppendString = str; }
34 :
35 : //virtual void GetTimeInfoOCDB(const Char_t* runList, const Char_t* outFile,
36 : //Int_t firstRun, Int_t lastRun, UInt_t infoFlags,
37 : //const Char_t* ocdbStorage) = 0;
38 :
39 0 : virtual void Draw(Option_t* opt="") { fTree->Draw(opt); }
40 : virtual Long64_t Draw(const Char_t* varexp, const TCut& selection, Option_t* option = "",
41 : Long64_t nentries = 1000000000, Long64_t firstentry = 0) {
42 0 : return fTree->Draw(varexp, selection, option, nentries, firstentry);
43 : };
44 : virtual Long64_t Draw(const Char_t* varexp, const Char_t* selection, Option_t* option = "",
45 : Long64_t nentries = 1000000000, Long64_t firstentry = 0) {
46 0 : return fTree->Draw(varexp, selection, option, nentries, firstentry);
47 : };
48 :
49 : virtual const char* AddAbbreviations(Char_t* c, Bool_t printDrawCommand = kFALSE) = 0;
50 : // easy drawing of data, use '~' for abbreviation of '.fElements'
51 : virtual Int_t EasyDraw(const Char_t* drawCommand, const Char_t* sector, const Char_t* cuts = 0,
52 : const Char_t* drawOptions = 0, Bool_t writeDrawCommand = kFALSE) const = 0;
53 : // easy drawing of data, use '~' for abbreviation of '.fElements'
54 : virtual Int_t EasyDraw(const Char_t* drawCommand, Int_t sector, const Char_t* cuts = 0,
55 : const Char_t* drawOptions = 0, Bool_t writeDrawCommand = kFALSE) const = 0;
56 : // easy drawing of data, use '~' for abbreviation of '.fElements'
57 : virtual Int_t EasyDraw1D(const Char_t* drawCommand, const Char_t* sector, const Char_t* cuts = 0,
58 : const Char_t* drawOptions = 0, Bool_t writeDrawCommand = kFALSE) const = 0;
59 : // easy drawing of data, use '~' for abbreviation of '.fElements'
60 : virtual Int_t EasyDraw1D(const Char_t* drawCommand, Int_t sector, const Char_t* cuts = 0,
61 : const Char_t* drawOptions = 0, Bool_t writeDrawCommand = kFALSE) const = 0;
62 : // formats title and axis labels of histo, removes '.fElements'
63 : void FormatHistoLabels(TH1 *histo) const;
64 : // draws 1d histograms and superimposes mean, median, ltm and several sigma cuts
65 : Int_t DrawHisto1D(const Char_t* drawCommand, const Char_t* sector, const Char_t* cuts = 0,
66 : const Char_t *sigmas = "2;4;6", Bool_t plotMean = kTRUE, Bool_t plotMedian = kTRUE,
67 : Bool_t plotLTM = kTRUE) const;
68 : // draws fraction of used pads over different sigma cuts
69 : Int_t SigmaCut(const Char_t* drawCommand, const Char_t* sector, const Char_t* cuts = 0,
70 : Float_t sigmaMax = 5, Bool_t plotMean = kTRUE, Bool_t plotMedian = kTRUE,
71 : Bool_t plotLTM = kTRUE, Bool_t pm = kFALSE, const Char_t *sigmas = "",
72 : Float_t sigmaStep = -1) const;
73 : // draws an integrated histogram
74 : Int_t Integrate(const Char_t* drawCommand, const Char_t* sector, const Char_t* cuts = 0,
75 : Float_t sigmaMax = 5, Bool_t plotMean = kTRUE, Bool_t plotMedian = kTRUE,
76 : Bool_t plotLTM = kTRUE, const Char_t *sigmas = "", Float_t sigmaStep = -1) const;
77 :
78 : virtual TObjArray* GetListOfVariables(Bool_t printList = kFALSE) = 0;
79 : virtual TObjArray* GetListOfNormalizationVariables(Bool_t printList = kFALSE) const = 0;
80 :
81 : TFriendElement* AddReferenceTree(const Char_t* filename, const Char_t* treename = "tree", const Char_t* refname = "R");
82 : TFriendElement* AddFriend(const Char_t* treename, const Char_t* filename)
83 0 : {return fTree->AddFriend(treename, filename);};
84 : TFriendElement* AddFriend(TTree* tree, const Char_t* alias, Bool_t warn=kFALSE)
85 0 : {return fTree->AddFriend(tree, alias, warn);};
86 : TFriendElement* AddFriend(const Char_t* treename, TFile* file)
87 0 : {return fTree->AddFriend(treename, file);};
88 0 : TTree * GetTree() const { return fTree;}
89 :
90 : TString* Fit(const Char_t* drawCommand, const Char_t* formula, const Char_t* cuts,
91 : Double_t & chi2, TVectorD &fitParam, TMatrixD &covMatrix);
92 : static Double_t GetLTM(Int_t n, Double_t *array, Double_t *sigma = 0, Double_t fraction = 0.9);
93 : static Int_t GetBin(Float_t value, Int_t nbins, Double_t binLow, Double_t binUp);
94 : static TH1F* SigmaCut(Int_t n, Float_t *array, Float_t mean, Float_t sigma, Int_t nbins,
95 : Float_t binLow, Float_t binUp, Float_t sigmaMax, Float_t sigmaStep = -1, Bool_t pm = kFALSE);
96 : static TH1F* SigmaCut(TH1F *histogram, Float_t mean, Float_t sigma, Float_t sigmaMax,
97 : Float_t sigmaStep = -1, Bool_t pm = kFALSE);
98 : static TH1F* Integrate(TH1F *histogram, Float_t mean = 0, Float_t sigma = 0,
99 : Float_t sigmaMax = 0, Float_t sigmaStep = -1);
100 : static TH1F* Integrate(Int_t n, Float_t *array, Int_t nbins, Float_t binLow, Float_t binUp,
101 : Float_t mean = 0, Float_t sigma = 0, Float_t sigmaMax = 0, Float_t sigmaStep = -1);
102 : static TH1F* SigmaCut(Int_t n, Double_t *array, Double_t mean, Double_t sigma,
103 : Int_t nbins, Double_t *xbins, Double_t sigmaMax);
104 :
105 : protected:
106 : TTree* fTree; // tree containing visualization data (e.g. written by AliTPCCalPad::MakeTree(...)
107 : TFile* fFile; // file that contains a calPads tree (e.g. written by AliTPCCalPad::MakeTree(...)
108 : TObjArray* fListOfObjectsToBeDeleted; //Objects, that will be deleted when the destructor ist called
109 : Bool_t fTreeMustBeDeleted; // decides weather the tree must be deleted in destructor or not
110 : TString fAbbreviation; // the abreviation for '.fElements'
111 : TString fAppendString; // '.fElements', stored in a TStrig
112 :
113 : void DrawLines(TH1F *cutHistoMean, TVectorF nsigma, TLegend *legend, Int_t color, Bool_t pm) const;
114 : void DrawLines(TGraph *graph, TVectorF nsigma, TLegend *legend, Int_t color, Bool_t pm) const;
115 :
116 :
117 128 : ClassDef(AliBaseCalibViewer,1) // Base calibration viewer class
118 : };
119 :
120 : #endif
|