]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/AliQADataMaker.h
AOD data classes moved from PWG4 to STEER (Gustavo Conesa)
[u/mrichter/AliRoot.git] / STEER / AliQADataMaker.h
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                               */
5
6
7 /* $Id$ */
8
9 //
10 //  Base Class:
11 //  Produces the data needed to calculate the quality assurance. 
12 //  All data must be mergeable objects.
13 //  Y. Schutz CERN July 2007
14 //
15
16
17 // --- ROOT system ---
18 #include <TH1.h>
19 #include <TObjArray.h>
20 #include <TNamed.h>  
21 //class TCanvas ; 
22 class TClonesArray;
23 class TDirectory;
24 class TFile;  
25 class TObject; 
26 class TTree; 
27 class AliESDEvent;
28 class AliRawReader;
29 class AliDetectorRecoParam;
30
31 // --- Standard library ---
32
33 // --- AliRoot header files ---
34 #include "AliQAv1.h"
35 #include "AliRecoParam.h" 
36
37 class AliQADataMaker: public TNamed {
38   
39 public:
40         
41         AliQADataMaker(const Char_t * name="", const Char_t * title="") ;          // ctor
42         AliQADataMaker(const AliQADataMaker& qadm) ;   
43         virtual ~AliQADataMaker() ; // dtor
44   
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 ; 
55         void                Finish() const ; 
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        InitRaws()          = 0 ; 
73   virtual void        InitRecPoints()     = 0 ; 
74   Bool_t              IsCycleDone() const { return fCycleCounter > fCycle ? kTRUE : kFALSE ; }
75   Bool_t              IsValidEventSpecie(Int_t eventSpecieIndex, TObjArray ** list) ; 
76         void                Reset() { fCycleCounter = 0 ; }
77         virtual void        ResetDetector() {;}
78         void                SetCycle(Int_t nevts) { fCycle = nevts ; } 
79   void                SetWriteExpert() { fWriteExpert = kTRUE ; }
80         virtual void        StartOfCycle(Int_t run = -1)                                                   = 0 ;
81         virtual void        StartOfCycle(AliQAv1::TASKINDEX_t, Int_t run, const Bool_t sameCycle = kFALSE) = 0 ;
82   void                UnSetWriteExpert() { fWriteExpert = kFALSE ; }
83   Bool_t              WriteExpert() { return fWriteExpert ; }
84   void                SetEventSpecie(AliRecoParam::EventSpecie_t es) { fEventSpecie = es ; }
85   void                SetEventSpecie(Int_t es) { fEventSpecie = AliRecoParam::Convert(es) ; }
86   virtual void        SetRecoParam(const AliDetectorRecoParam *) {;}
87
88   virtual void        InitRecPointsForTracker() {;} // needed by AliGlobalQADataMaker
89
90 protected: 
91
92         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) ;
93   TH1 *          CloneMe(TH1 * hist, Int_t specie) const ; 
94         virtual void   DefaultEndOfDetectorCycle(AliQAv1::TASKINDEX_t task ) ; 
95         TObject *      GetData(TObjArray ** list, const Int_t index) ;
96         virtual void   InitESDs()          = 0 ; 
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 ;
114         
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
126   
127 private:
128         AliQADataMaker& operator = (const AliQADataMaker& /*qadm*/); // Not implemented
129
130   
131  ClassDef(AliQADataMaker,3)  // description 
132
133 };
134
135 #endif // AliQADataMaker_H