Line data Source code
1 : //-*- Mode: C++ -*-
2 : // $Id$
3 :
4 : #ifndef ALIHLTQADATAMAKERREC_H
5 : #define ALIHLTQADATAMAKERREC_H
6 : //* This file is property of and copyright by the ALICE HLT Project *
7 : //* ALICE Experiment at CERN, All rights reserved. *
8 : //* See cxx source for full Copyright notice *
9 :
10 : /** @file AliHLTQADataMakerRec.h
11 : @author Matthias Richter
12 : @date 2010-03-10
13 : @brief Steering class for the HLT offline QA
14 : */
15 :
16 : #include "AliHLTQADataMakerBase.h"
17 : #include "TList.h"
18 :
19 : /**
20 : * @class AliHLTQADataMakerRec
21 : * Steering class for HLT QA for reconstruction.
22 : *
23 : * HLT QA allows to define multiple HLT detector QA plugins. Each plugin
24 : * inherits through AliHLTQADataMakerBase from AliQADataMakerRec. Currently only
25 : * the AliQADataMakerRec interface is supported in the HLT QA. It seems that
26 : * AliQADataMakerSim is not relevant for HLT QA. However if so and at some
27 : * point it is required please inform the author of this class.
28 : *
29 : * AliHLTQADataMakerRec keeps a list of detector plugins and redirects the
30 : * different QA calls to all the plugins. At EndOfDetectorCycle all histograms
31 : * are collected from the plugins after EndOfDetectorCycle has been invoked
32 : * for every plugin.
33 : *
34 : * Detector plugins are added via the AliHLTModuleAgent. The optional function
35 : * AliHLTModuleAgent::GetQAPlugins() has to return a string of blank separated
36 : * class names.
37 : *
38 : * HLT QA requires access to both the Esd and HLTEsd objects. Therefore the
39 : * Exec function is overloaded in AliHLTQADataMakerRec. A specific hnadling
40 : * in AliQAManager::RunOneEvent makes sure that an array of those objects
41 : * is passed, the call is then redirected to
42 : * MakeESDs(AliESDEvent*, AliESDEvent*). Please note that the standard function
43 : * MakeESDs(AliESDEvent*) is usually not the place for HLT QA.
44 : */
45 : class AliHLTQADataMakerRec: public AliHLTQADataMakerBase {
46 :
47 : public:
48 :
49 : AliHLTQADataMakerRec();
50 : virtual ~AliHLTQADataMakerRec();
51 :
52 : protected:
53 : virtual void StartOfDetectorCycle();
54 : virtual void EndOfDetectorCycle(AliQAv1::TASKINDEX_t, TObjArray** list);
55 : virtual void MakeRaws(AliRawReader * rawReader);
56 : virtual void MakeESDs(AliESDEvent * esd, AliESDEvent* hltesd);
57 :
58 : /// iterate over available agents and query class names of plugins
59 : int LoadAgents();
60 :
61 : /// load plugins from list of blank separated class names
62 : int LoadPlugins(const char* plugins=NULL);
63 :
64 : enum {
65 : kDigitsListInit = 0x1,
66 : kESDsListInit = 0x2,
67 : kRawsListInit = 0x4,
68 : kRecPointsListInit = 0x8
69 : };
70 :
71 : private:
72 : /** copy constructor prohibited */
73 : AliHLTQADataMakerRec(const AliHLTQADataMakerRec&);
74 : /** assignment operator prohibited */
75 : AliHLTQADataMakerRec& operator = (const AliHLTQADataMakerRec&);
76 :
77 : TList fPlugins; //! list of HLT module QA plugins
78 : unsigned fFlags; //!
79 :
80 10 : ClassDef(AliHLTQADataMakerRec,0) // HLT Quality Assurance Data Maker for reconstruction
81 : };
82 :
83 : #endif // ALIHLTQADATAMAKERREC_H
|