Implementing the skeleton for HLT QA for type kESDs (reconstruction)
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 25 Nov 2009 13:24:25 +0000 (13:24 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 25 Nov 2009 13:24:25 +0000 (13:24 +0000)
Adding a cutomized Exec function to HLTQADataMakerRec, AliReconstructions
needs to be patched to send both ESD and HLT ESD.

Adding skeleton for AliHLTQAChecker

HLT/QA/AliHLTQAChecker.cxx [new file with mode: 0644]
HLT/QA/AliHLTQAChecker.h [new file with mode: 0644]
HLT/QA/AliHLTQADataMakerRec.cxx
HLT/QA/AliHLTQADataMakerRec.h
HLT/libHLTqadm.pkg

diff --git a/HLT/QA/AliHLTQAChecker.cxx b/HLT/QA/AliHLTQAChecker.cxx
new file mode 100644 (file)
index 0000000..7994ff3
--- /dev/null
@@ -0,0 +1,69 @@
+// $Id$
+
+//**************************************************************************
+//* This file is property of and copyright by the ALICE HLT Project        * 
+//* ALICE Experiment at CERN, All rights reserved.                         *
+//*                                                                        *
+//* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
+//*                  for The ALICE HLT Project.                            *
+//*                                                                        *
+//* Permission to use, copy, modify and distribute this software and its   *
+//* documentation strictly for non-commercial purposes is hereby granted   *
+//* without fee, provided that the above copyright notice appears in all   *
+//* copies and that both the copyright notice and this permission notice   *
+//* appear in the supporting documentation. The authors make no claims     *
+//* about the suitability of this software for any purpose. It is          *
+//* provided "as is" without express or implied warranty.                  *
+//**************************************************************************
+
+/** @file   AliHLTQAChecker.cxx
+    @author Matthias Richter
+    @date   2009-11-24
+    @brief  HLT QA checker instance
+*/
+#include "AliHLTQAChecker.h"
+
+/** ROOT macro for the implementation of ROOT specific class methods */
+ClassImp(AliHLTQAChecker)
+
+AliHLTQAChecker::AliHLTQAChecker() 
+  : AliQACheckerBase("HLT","TPC Quality Assurance Checker")
+{
+}
+
+AliHLTQAChecker::AliHLTQAChecker(const AliHLTQAChecker& src) 
+  : AliQACheckerBase(src.GetName(), src.GetTitle())
+{
+}
+
+AliHLTQAChecker::~AliHLTQAChecker()
+{
+}
+
+Double_t * AliHLTQAChecker::Check(AliQAv1::ALITASK_t /*task*/, TObjArray ** /*pTarget*/, AliDetectorRecoParam * /*recoParam*/)
+{
+  return NULL;
+}
+
+void AliHLTQAChecker::Init(const AliQAv1::DETECTORINDEX_t /*det*/)
+{
+}
+
+void AliHLTQAChecker::SetQA(AliQAv1::ALITASK_t /*index*/, Double_t * /*value*/) const
+{
+}
+
+Double_t AliHLTQAChecker::CheckRAW(Int_t /*specie*/, TObjArray* /*list*/)
+{
+  return 0.0;
+}
+
+Double_t AliHLTQAChecker::CheckREC(Int_t /*specie*/, TObjArray* /*list*/)
+{
+  return 0.0;
+}
+
+Double_t AliHLTQAChecker::CheckESD(Int_t /*specie*/, TObjArray* /*list*/)
+{
+  return 0.0;
+}
diff --git a/HLT/QA/AliHLTQAChecker.h b/HLT/QA/AliHLTQAChecker.h
new file mode 100644 (file)
index 0000000..e13903d
--- /dev/null
@@ -0,0 +1,40 @@
+//-*- Mode: C++ -*-
+// $Id$
+
+#ifndef ALIHLTQACHECKER_H
+#define ALIHLTQACHECKER_H
+//* This file is property of and copyright by the ALICE HLT Project        * 
+//* ALICE Experiment at CERN, All rights reserved.                         *
+//* See cxx source for full Copyright notice                               *
+
+/** @file   AliHLTQAChecker.h
+    @author Matthias Richter
+    @date   2009-11-24
+    @brief  HLT QA checker instance
+*/
+
+#include "AliQACheckerBase.h"
+#include <TObjArray.h>
+
+class AliHLTQAChecker: public AliQACheckerBase {
+  
+ public:
+  AliHLTQAChecker();
+  AliHLTQAChecker(const AliHLTQAChecker& src);
+  virtual ~AliHLTQAChecker();
+
+  virtual Double_t * Check(AliQAv1::ALITASK_t, TObjArray **, AliDetectorRecoParam * recoParam); 
+  void Init(const AliQAv1::DETECTORINDEX_t det); 
+  void SetQA(AliQAv1::ALITASK_t index, Double_t * value) const;
+
+private:
+  
+  Double_t CheckRAW(Int_t specie, TObjArray* list);
+  Double_t CheckREC(Int_t specie, TObjArray* list);
+  Double_t CheckESD(Int_t specie, TObjArray* list);
+
+  ClassDef(AliHLTQAChecker,1)  // HLT Quality Assurance Checker
+
+};
+
+#endif // ALIHLTQACHECKER_H
index 052d82f..ed32c40 100644 (file)
     @brief  Container for the HLT offline QA
 */
 #include "AliHLTQADataMakerRec.h"
+#include "AliESDEvent.h"
+#include <iostream>
+
+using namespace std;
 
 /** ROOT macro for the implementation of ROOT specific class methods */
 ClassImp(AliHLTQADataMakerRec)
@@ -40,6 +44,44 @@ AliHLTQADataMakerRec::~AliHLTQADataMakerRec()
   // see header file for class documentation
 }
 
+void AliHLTQADataMakerRec::Exec(AliQAv1::TASKINDEX_t task, TObject * data) 
+{ 
+  // special handling for esds
+  if ( task == AliQAv1::kESDS ) {
+    AliESDEvent * esd = NULL;
+    AliESDEvent * hltesd = NULL;
+    if (data->IsA() == AliESDEvent::Class()) {
+      // silently skip this. Currently HLT QA is still called as
+      // part of AliQAManager::RunOneEvent with the esd
+      return;
+    }
+    if (data->InheritsFrom("TObjArray")) {
+      TObjArray* array=dynamic_cast<TObjArray*>(data);
+      if (array && array->GetEntriesFast()>0) {
+       esd = dynamic_cast<AliESDEvent *>(array->At(0)) ;
+      }
+      if (array && array->GetEntriesFast()>1) {
+       hltesd = dynamic_cast<AliESDEvent *>(array->At(1)) ;
+      }
+    } else {
+      esd = static_cast<AliESDEvent *>(data) ; 
+    }
+
+    if (esd && strcmp(esd->ClassName(), "AliESDEvent") == 0) {
+      if (hltesd) {
+       MakeESDs(esd, hltesd);
+      } else {
+       AliError(Form("HLT ESD missing or wrong class type (%p), skipping HLT QA task kESDs", hltesd));
+      }
+    } else {
+      AliError(Form("ESD missing or wrong class type (%p), skipping HLT QA task kESDSs", esd));
+    }
+  } else {
+    // forward for all other types
+    AliQADataMakerRec::Exec(task, data);
+  }
+}
+
 void AliHLTQADataMakerRec::StartOfDetectorCycle()
 {
   // see header file for class documentation
@@ -49,3 +91,30 @@ void AliHLTQADataMakerRec::EndOfDetectorCycle(AliQAv1::TASKINDEX_t, TObjArray**
 {
   // see header file for class documentation
 }
+
+void AliHLTQADataMakerRec::MakeRaws(AliRawReader * rawReader)
+{
+  // see header file for class documentation
+  if (!rawReader) return;
+}
+
+void AliHLTQADataMakerRec::MakeESDs(AliESDEvent * esd)
+{
+  // see header file for class documentation
+  
+  // as an extension in the QA interface also the hlt esd can be sent
+  // in order to preserve backward compatibility, a new function has been
+  // introduced.
+  //
+  // NOTE: This function is not the place for HLT QA
+  if (!esd) return;
+}
+
+void AliHLTQADataMakerRec::MakeESDs(AliESDEvent * esd, AliESDEvent* hltesd)
+{
+  // HLT QA on ESDs
+  if (!esd || !hltesd) {
+    AliError("invalid parameter: missing ESDs");
+    return;
+  }
+}
index 211e539..96f76e0 100644 (file)
@@ -21,15 +21,19 @@ public:
   
   AliHLTQADataMakerRec();
   virtual ~AliHLTQADataMakerRec();
-  
+
 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);
+  virtual void Exec(AliQAv1::TASKINDEX_t task, TObject * data);
+  virtual void StartOfDetectorCycle();
+  virtual void EndOfDetectorCycle(AliQAv1::TASKINDEX_t, TObjArray** list);
+  virtual void MakeRaws(AliRawReader * rawReader);
+  virtual void MakeESDs(AliESDEvent * esd);
+  virtual void MakeESDs(AliESDEvent * esd, AliESDEvent* hltesd);
 
   ClassDef(AliHLTQADataMakerRec,0)  // HLT Quality Assurance Data Maker for reconstruction
 };
index aa443f2..97caa8d 100644 (file)
@@ -2,7 +2,8 @@
 # $Id$
 
 CLASS_HDRS:=   AliHLTQADataMakerSim.h \
-               AliHLTQADataMakerRec.h
+               AliHLTQADataMakerRec.h \
+               AliHLTQAChecker.h
 
 MODULE_SRCS:=  $(CLASS_HDRS:.h=.cxx)