1 #ifndef ALIQADATAMAKER_H
2 #define ALIQADATAMAKER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
11 // Produces the data needed to calculate the quality assurance.
12 // All data must be mergeable objects.
13 // Y. Schutz CERN July 2007
17 // --- ROOT system ---
19 #include <TObjArray.h>
29 class AliDetectorRecoParam;
31 // --- Standard library ---
33 // --- AliRoot header files ---
35 #include "AliRecoParam.h"
37 class AliQADataMaker: public TNamed {
41 AliQADataMaker(const Char_t * name="", const Char_t * title="") ; // ctor
42 AliQADataMaker(const AliQADataMaker& qadm) ;
43 virtual ~AliQADataMaker() ; // dtor
45 virtual Int_t Add2DigitsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE) = 0 ;
46 virtual Int_t Add2ESDsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE) = 0 ;
47 virtual Int_t Add2HitsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE) = 0 ;
48 virtual Int_t Add2RecPointsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE) = 0 ;
49 virtual Int_t Add2RawsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE, const Bool_t saveForCorr = kFALSE) = 0 ;
50 virtual Int_t Add2SDigitsList(TH1 * hist, const Int_t index, const Bool_t expert = kFALSE, const Bool_t image = kFALSE) = 0 ;
51 virtual void Exec(AliQAv1::TASKINDEX_t, TObject * data) = 0 ;
52 virtual void EndOfCycle() = 0 ;
53 virtual void EndOfCycle(AliQAv1::TASKINDEX_t ) = 0 ;
54 virtual void EndOfDetectorCycle(AliQAv1::TASKINDEX_t task, TObjArray ** list ) = 0 ;
56 virtual TH1 * GetDigitsData(const Int_t index) = 0 ;
57 virtual TH1 * GetESDsData(const Int_t index) = 0 ;
58 AliRecoParam::EventSpecie_t GetEventSpecie() const { return fEventSpecie ; }
59 virtual TH1 * GetHitsData(const Int_t index) = 0 ;
60 virtual TH1 * GetRecPointsData(const Int_t index) = 0 ;
61 virtual TH1 * GetRawsData(const Int_t index) = 0 ;
62 virtual TH1 * GetSDigitsData(const Int_t index) = 0 ;
63 const Char_t * GetDetectorDirName() const { return fDetectorDirName.Data() ; }
64 TList * GetParameterList() const { return fParameterList[AliRecoParam::AConvert(fEventSpecie)] ; }
65 virtual const AliDetectorRecoParam * GetRecoParam() { return NULL ; }
66 Int_t GetRun() const { return fRun ; }
67 Int_t Increment() { return ++fCycleCounter ; }
68 virtual TObjArray** Init(AliQAv1::TASKINDEX_t, Int_t cycles = -1) = 0 ;
69 TObjArray* Init(AliQAv1::TASKINDEX_t, AliRecoParam::EventSpecie_t es, Int_t cycles = -1) ;
70 virtual void Init(AliQAv1::TASKINDEX_t, TObjArray ** list, Int_t run, Int_t cycles = -1) = 0 ;
71 virtual void InitDigits() = 0 ;
72 virtual void InitESDs() = 0 ;
73 virtual void InitRaws() = 0 ;
74 virtual void InitRecPoints() = 0 ;
75 Bool_t IsCycleDone() const { return fCycleCounter > fCycle ? kTRUE : kFALSE ; }
76 Bool_t IsValidEventSpecie(Int_t eventSpecieIndex, TObjArray ** list) ;
77 void Reset() { fCycleCounter = 0 ; }
78 virtual void ResetDetector(AliQAv1::TASKINDEX_t task) = 0 ;
79 void SetCycle(Int_t nevts) { fCycle = nevts ; }
80 void SetWriteExpert() { fWriteExpert = kTRUE ; }
81 virtual void StartOfCycle(Int_t run = -1) = 0 ;
82 virtual void StartOfCycle(AliQAv1::TASKINDEX_t, Int_t run, const Bool_t sameCycle = kFALSE) = 0 ;
83 void UnSetWriteExpert() { fWriteExpert = kFALSE ; }
84 Bool_t WriteExpert() { return fWriteExpert ; }
85 void SetEventSpecie(AliRecoParam::EventSpecie_t es) { fEventSpecie = es ; }
86 void SetEventSpecie(Int_t es) { fEventSpecie = AliRecoParam::Convert(es) ; }
87 virtual void SetRecoParam(const AliDetectorRecoParam *) {;}
89 virtual void InitRecPointsForTracker() {;} // needed by AliGlobalQADataMaker
93 Int_t Add2List(TH1 * hist, const Int_t index, TObjArray ** list, const Bool_t expert = kFALSE, const Bool_t image = kFALSE, const Bool_t saveForCorr = kFALSE) ;
94 TH1 * CloneMe(TH1 * hist, Int_t specie) const ;
95 virtual void DefaultEndOfDetectorCycle(AliQAv1::TASKINDEX_t task ) ;
96 TObject * GetData(TObjArray ** list, const Int_t index) ;
97 virtual void InitHits() = 0 ;
98 //virtual void InitRecParticles() = 0 ;
99 virtual void InitSDigits() = 0 ;
100 //virtual void InitTrackSegments() = 0 ;
101 virtual void MakeESDs(AliESDEvent * ) = 0 ;
102 virtual void MakeHits() = 0 ;
103 virtual void MakeHits(TTree * ) = 0 ;
104 virtual void MakeDigits() = 0 ;
105 virtual void MakeDigits(TTree * ) = 0 ;
106 //virtual void MakeRecParticles( ) = 0 ;
107 virtual void MakeRaws(AliRawReader *) = 0 ;
108 virtual void MakeRecPoints(TTree * ) = 0 ;
109 virtual void MakeSDigits() = 0 ;
110 virtual void MakeSDigits(TTree * ) = 0 ;
111 //virtual void MakeTrackSegments(TTree * ) = 0 ;
112 void ResetCycle() { fCurrentCycle++ ; fCycleCounter = 0 ; }
113 virtual void StartOfDetectorCycle() = 0 ;
115 TFile * fOutput ; //! output root file
116 TDirectory * fDetectorDir ; //! directory for the given detector in the file
117 TString fDetectorDirName ; //! detector directory name in the quality assurance data file
118 Int_t fCurrentCycle ; //! current cycle number
119 Int_t fCycle ; //! length (# events) of the QA data acquisition cycle
120 Int_t fCycleCounter ; //! cycle counter
121 Bool_t fWriteExpert ; //! flag to write or not the expert QA data
122 TList ** fParameterList ; //! list of QA data parameters
123 Int_t fRun ; //! run number
124 AliRecoParam::EventSpecie_t fEventSpecie ; //! event specie, see AliRecoParam
125 TClonesArray * fDigitsArray ; //! array to hold the sdigits
128 AliQADataMaker& operator = (const AliQADataMaker& /*qadm*/); // Not implemented
131 ClassDef(AliQADataMaker,3) // description
135 #endif // AliQADataMaker_H