]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/QA/AliHLTQADataMakerRec.h
removed warning
[u/mrichter/AliRoot.git] / HLT / QA / AliHLTQADataMakerRec.h
index 211e539ce94127dd029ffa9293c82e23b8868461..e8b434e490ce08833facb5891c2e7f97a5f44b34 100644 (file)
@@ -9,27 +9,73 @@
 
 /** @file   AliHLTQADataMakerRec.h
     @author Matthias Richter
-    @date   2009-05-14
-    @brief  Container for the HLT offline QA
+    @date   2010-03-10
+    @brief  Steering class for the HLT offline QA
 */
 
-#include "AliQADataMakerRec.h"
+#include "AliHLTQADataMakerBase.h"
+#include "TList.h"
 
-class AliHLTQADataMakerRec: public AliQADataMakerRec {
+/**
+ * @class AliHLTQADataMakerRec
+ * Steering class for HLT QA for reconstruction.
+ *
+ * HLT QA allows to define multiple HLT detector QA plugins. Each plugin
+ * inherits through AliHLTQADataMakerBase from AliQADataMakerRec. Currently only
+ * the AliQADataMakerRec interface is supported in the HLT QA. It seems that
+ * AliQADataMakerSim is not relevant for HLT QA. However if so and at some
+ * point it is required please inform the author of this class.
+ *
+ * AliHLTQADataMakerRec keeps a list of detector plugins and redirects the
+ * different QA calls to all the plugins. At EndOfDetectorCycle all histograms
+ * are collected from the plugins after EndOfDetectorCycle has been invoked
+ * for every plugin.
+ *
+ * Detector plugins are added via the AliHLTModuleAgent. The optional function
+ * AliHLTModuleAgent::GetQAPlugins() has to return a string of blank separated
+ * class names.
+ * 
+ * HLT QA requires access to both the Esd and HLTEsd objects. Therefore the
+ * Exec function is overloaded in AliHLTQADataMakerRec. A specific hnadling
+ * in AliQAManager::RunOneEvent makes sure that an array of those objects
+ * is passed, the call is then redirected to 
+ * MakeESDs(AliESDEvent*, AliESDEvent*). Please note that the standard function
+ * MakeESDs(AliESDEvent*) is usually not the place for HLT QA.
+ */
+class AliHLTQADataMakerRec: public AliHLTQADataMakerBase {
 
 public:
-  
+
   AliHLTQADataMakerRec();
   virtual ~AliHLTQADataMakerRec();
-  
+
+protected:
+  virtual void StartOfDetectorCycle();
+  virtual void EndOfDetectorCycle(AliQAv1::TASKINDEX_t, TObjArray** list);
+  virtual void MakeRaws(AliRawReader * rawReader);
+  virtual void MakeESDs(AliESDEvent * esd, AliESDEvent* hltesd);
+
+  /// iterate over available agents and query class names of plugins
+  int LoadAgents();
+
+  /// load plugins from list of blank separated class names
+  int LoadPlugins(const char* plugins=NULL);
+
+  enum {
+    kDigitsListInit    = 0x1,
+    kESDsListInit      = 0x2,
+    kRawsListInit      = 0x4,
+    kRecPointsListInit = 0x8
+  };
+
 private:
   /** copy constructor prohibited */
   AliHLTQADataMakerRec(const AliHLTQADataMakerRec&);   
   /** assignment operator prohibited */
   AliHLTQADataMakerRec& operator = (const AliHLTQADataMakerRec&);
 
-  virtual void   StartOfDetectorCycle();
-  virtual void   EndOfDetectorCycle(AliQAv1::TASKINDEX_t, TObjArray** list);
+  TList fPlugins; //! list of HLT module QA plugins
+  unsigned fFlags; //!
 
   ClassDef(AliHLTQADataMakerRec,0)  // HLT Quality Assurance Data Maker for reconstruction
 };