]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
reverting r47843: inconsistent mix committed by accident
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 26 Feb 2011 22:57:56 +0000 (22:57 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 26 Feb 2011 22:57:56 +0000 (22:57 +0000)
HLT/CMakelibAliHLTTPC.pkg
HLT/trigger/AliHLTEventSummary.cxx [new file with mode: 0644]
HLT/trigger/AliHLTEventSummary.h [new file with mode: 0644]
HLT/trigger/AliHLTEventSummaryProducerComponent.cxx [new file with mode: 0644]
HLT/trigger/AliHLTEventSummaryProducerComponent.h [new file with mode: 0644]
HLT/trigger/AliHLTRunSummary.cxx [new file with mode: 0644]
HLT/trigger/AliHLTRunSummary.h [new file with mode: 0644]
HLT/trigger/AliHLTRunSummaryProducerComponent.cxx [new file with mode: 0644]
HLT/trigger/AliHLTRunSummaryProducerComponent.h [new file with mode: 0644]
HLT/trigger/AliHLTTriggerAgent.cxx
HLT/trigger/AliHLTTriggerLinkDef.h

index 09202436c7d9247e3221442b0f5f907f71852a09..959bb7e0ac581e0e5588d339f85809434dae5c19 100644 (file)
@@ -124,6 +124,10 @@ set ( CLASS_HDRS
     comp/AliHLTTPCCompModelDeflaterComponent.h
     comp/AliHLTTPCCompModelInflater.h
     comp/AliHLTTPCCompModelInflaterComponent.h
+    AliHLTTPCEventStatistics.h
+    AliHLTTPCEventStatisticsProducerComponent.h
+    AliHLTTPCRunStatistics.h
+    AliHLTTPCRunStatisticsProducerComponent.h
     AliHLTTPCKryptonClusterFinder.h
     AliHLTTPCKryptonClusterFinderComponent.h
     AliHLTTPCClusterHistoComponent.h
diff --git a/HLT/trigger/AliHLTEventSummary.cxx b/HLT/trigger/AliHLTEventSummary.cxx
new file mode 100644 (file)
index 0000000..2b8483e
--- /dev/null
@@ -0,0 +1,72 @@
+//-*- Mode: C++ -*-
+// $Id$
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ *                                                                        *
+ * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
+ *                  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   AliHLTEventSummary.cxx
+    @author Jochen Thaeder
+    @date   
+    @brief  Summary class for run statistics, merges all detectors
+*/
+
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+#include "AliHLTEventSummary.h"
+
+ClassImp(AliHLTEventSummary)
+    
+  AliHLTEventSummary::AliHLTEventSummary() : 
+    fRejected(kTRUE),
+    fRunNumber(0),
+    fRunType(0),
+    fTriggerClass(0),
+    fDetectorArray(NULL) {
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+
+  fDetectorArray = new TObjArray;
+  fDetectorArray->SetOwner();
+}
+
+AliHLTEventSummary::~AliHLTEventSummary() {
+  // see header file for class documentation
+
+  if ( fDetectorArray )
+    delete fDetectorArray;
+  fDetectorArray = NULL;
+}
+
+Bool_t AliHLTEventSummary::AddDetector( TObject * obj ) {
+  // see header file for class documentation
+
+  Bool_t bResult = kTRUE;
+  
+  if ( fDetectorArray ) fDetectorArray->Add( obj );
+  else bResult = kFALSE;
+  
+  return bResult;
+}
diff --git a/HLT/trigger/AliHLTEventSummary.h b/HLT/trigger/AliHLTEventSummary.h
new file mode 100644 (file)
index 0000000..49827f7
--- /dev/null
@@ -0,0 +1,144 @@
+//-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTEVENTSUMMARY_H
+#define ALIHLTEVENTSUMMARY_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   AliHLTEventSummary.h
+    @author Jochen Thaeder
+    @date   
+    @brief  Summary class for run statistics, merges all detectors
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#include "TObject.h"
+#include "TObjArray.h"
+#include "TString.h"
+#include "AliHLTDataTypes.h"
+
+/**
+ * @class  AliHLTEventSummary
+ * @brief  Summary  class for event statistics, merges all detectors
+ *
+ * The event statistic classes hold information about certain characteristica 
+ * of the processed events. They are devided into 3 parts. A base class 
+ * @see AliHLTEventStatistics for general Information, detector specific
+ * classes like @see AliHLTTPCEventStatistics for the TPC and a summary class
+ * @see AliHLTEventSummary which can hold several detector classes.
+ *
+ * This is the summary class.
+ *
+ * See base class @see AliHLTEventStatistics for further information.
+ *
+ * @ingroup alihlt_run_statistics alihlt_trigger
+ */
+
+class AliHLTEventSummary : public TObject {
+  
+public:
+  
+  /** constructor */
+  AliHLTEventSummary();
+  /** destructor */
+  virtual ~AliHLTEventSummary();
+
+  // -- event reject  ------------------------
+
+  /** Reject this event */
+  void RejectEvent()                              { fRejected = kFALSE;} 
+
+  /** Check event is accepted
+   *  @return kTRUE if accepted, kFALSE if rejected
+   */
+  Bool_t IsAccepted() const                       { return fRejected;} 
+
+  // -- run parameters ------------------------
+
+  /** Set Run Number 
+   *  @param i run number
+   */
+  void SetRunNumber( AliHLTUInt32_t i )           { fRunNumber = i; }
+
+  /** Get Run Number 
+   *  @return run number
+   */
+  AliHLTUInt32_t GetRunNumber() const             { return  fRunNumber;}
+
+  /** Set Run Type 
+   *  @param i run type
+   */
+  void SetRunType( AliHLTUInt32_t i )             { fRunType = i; }
+
+  /** Get Run Type s
+   *  @return run type
+   */
+  AliHLTUInt32_t GetRunType() const               { return fRunType; }
+
+  // -- trigger parameters ------------------------
+
+  /** Set ocurrance of trigger classe with index i
+   *  @param u index of Trigger Class   
+   *  @return kTRUE on success
+   */
+  void SetTriggerClass( AliHLTUInt64_t u )        { fTriggerClass = u; } 
+
+  /** Get ocurrance of trigger classes 
+   *  @return ptr to array of trigger classes
+   */
+  AliHLTUInt64_t GetTriggerClasses() const        { return fTriggerClass; }
+  
+  // -- detector parameters ------------------------
+
+  /** Detector run statistics classes 
+   *  @return ptr to Detector arry
+   */
+  const TObjArray* GetDetectorArray () const      { return fDetectorArray; }
+  TObjArray* GetDetectorArray ()                  { return fDetectorArray; }
+
+  /** Rest the Detector array, all elements are removed */
+  void ResetDetectorArray()                       { if ( fDetectorArray ) fDetectorArray->Clear(); }
+
+  /** Add another detector event statistics class to detector arry 
+   *  @param obj to TObject, which should be added
+   *  @return kTRUE on success
+   */
+  Bool_t AddDetector( TObject *obj );
+
+private:
+
+  /** copy constructor prohibited */
+  AliHLTEventSummary (const AliHLTEventSummary&);
+
+  /** assignment operator prohibited */
+  AliHLTEventSummary& operator= (const AliHLTEventSummary&);
+
+  /** Event rejected 
+   *  - kFALSE is rejected
+   *  - kTRUE is default
+   */
+  Bool_t fRejected;                              // see above
+
+  /** Run Number */   
+  AliHLTUInt32_t fRunNumber;                     // see above
+
+  /** Run Type */
+  AliHLTUInt32_t fRunType;                       // see above
+
+  /** Trigger class */
+  AliHLTUInt64_t fTriggerClass;                  // see above
+
+  /** Detector run statistics classes */
+  TObjArray* fDetectorArray;                     //! transient
+
+  ClassDef(AliHLTEventSummary, 1);
+
+};
+#endif
diff --git a/HLT/trigger/AliHLTEventSummaryProducerComponent.cxx b/HLT/trigger/AliHLTEventSummaryProducerComponent.cxx
new file mode 100644 (file)
index 0000000..d3e6009
--- /dev/null
@@ -0,0 +1,163 @@
+//-*- Mode: C++ -*-
+// $Id$
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ *                                                                        *
+ * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
+ *                  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   AliHLTEventSummaryProducerComponent.cxx
+    @author Jochen Thaeder
+    @date   
+    @brief  Produces a event summary as @see AliHLTEventSummary
+*/
+
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+#include "AliHLTEventSummaryProducerComponent.h"
+#include "AliHLTTPCEventStatistics.h"
+#include "AliRawDataHeader.h"
+
+#include <cerrno>
+
+// ** This is a global object used for automatic component registration, do not use this
+AliHLTEventSummaryProducerComponent gAliHLTEventSummaryProducerComponent;
+
+ClassImp(AliHLTEventSummaryProducerComponent)
+    
+// ------------------------------------------------------------------------------------------
+AliHLTEventSummaryProducerComponent::AliHLTEventSummaryProducerComponent() : 
+  fEventSummary(NULL) {
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTEventSummaryProducerComponent::~AliHLTEventSummaryProducerComponent() {
+  // see header file for class documentation
+}
+
+// ------------------------------------------------------------------------------------------
+const char* AliHLTEventSummaryProducerComponent::GetComponentID() {
+  // see header file for class documentation
+  return "TriggerEventSummaryProducer"; 
+}
+
+// ------------------------------------------------------------------------------------------
+void AliHLTEventSummaryProducerComponent::GetInputDataTypes(AliHLTComponentDataTypeList& list) {
+  // see header file for class documentation
+
+  list.clear(); 
+  list.push_back( kAliHLTDataTypeEventStatistics );
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTComponentDataType AliHLTEventSummaryProducerComponent::GetOutputDataType() {
+  // see header file for class documentation
+
+  return kAliHLTDataTypeEventSummary;
+}
+
+// ------------------------------------------------------------------------------------------
+void AliHLTEventSummaryProducerComponent::GetOutputDataSize( unsigned long& constBase, 
+                                                            double& inputMultiplier ) {
+  // see header file for class documentation
+
+  constBase = sizeof( AliHLTEventSummary );
+  inputMultiplier = 0.0;
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTComponent* AliHLTEventSummaryProducerComponent::Spawn() {
+  // Spawn function, return new instance of this class
+  // see header file for class documentation
+
+  return new AliHLTEventSummaryProducerComponent;
+}
+
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTEventSummaryProducerComponent::DoInit( int /*argc*/, const char** /*argv*/ ) {
+  // see header file for class documentation
+
+  Int_t iResult = 0;
+  return iResult;
+}
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTEventSummaryProducerComponent::DoDeinit() {
+  // see header file for class documentation
+
+  if ( fEventSummary )
+    delete fEventSummary;
+  fEventSummary = NULL;
+
+  return 0;
+}
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTEventSummaryProducerComponent::DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& trigData ) {
+  // see header file for class documentation
+
+  if ( fEventSummary )
+    delete fEventSummary;
+
+  fEventSummary = new AliHLTEventSummary;
+
+  const TObject* iter = NULL;
+
+  // ** Loop over all event statistics input objs and add them to the event summary
+  for ( iter = GetFirstInputObject(kAliHLTDataTypeEventStatistics|kAliHLTDataOriginAny); iter != NULL; iter = GetNextInputObject() ) {
+
+    fEventSummary->AddDetector( (TObject*) iter );
+
+  } // for ( iter = GetFirstInputObject(kAliHLTDataTypeEventEventStatistics|kAliHLTDataOriginAny); iter != NULL; iter = GetNextInputObject() ) {
+  
+  // ** Process CTP trigger information
+  ProcessTriggerData( trigData );
+
+  // ** Set RunType / Run Number
+  fEventSummary->SetRunNumber ( GetRunNo() );
+  fEventSummary->SetRunType   ( GetRunType() );
+
+  // ** PushBack Event Summary
+  PushBack ( (TObject*) fEventSummary, sizeof(AliHLTEventSummary), kAliHLTDataTypeEventSummary, (AliHLTUInt32_t) 0 );
+
+  return 0;
+}
+
+// -- **********************************************************************************************
+// -- *******************************   Processing Functions  **************************************
+// -- **********************************************************************************************
+
+// -- **********************************************************************************************
+void AliHLTEventSummaryProducerComponent::ProcessTriggerData( AliHLTComponentTriggerData& trigData ) {
+  // see header file for class documentation
+  
+  const AliRawDataHeader* cdh = NULL;
+  if (AliHLTComponent::ExtractTriggerData(trigData, NULL, NULL, &cdh, NULL, true) != 0) return;
+  AliHLTUInt64_t triggerClass = cdh->GetTriggerClasses();
+  fEventSummary->SetTriggerClass( triggerClass );
+}
diff --git a/HLT/trigger/AliHLTEventSummaryProducerComponent.h b/HLT/trigger/AliHLTEventSummaryProducerComponent.h
new file mode 100644 (file)
index 0000000..60c2d88
--- /dev/null
@@ -0,0 +1,94 @@
+ //-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTEVENTSUMMARYPRODUCERCOMPONENT_H
+#define ALIHLTEVENTSUMMARYPRODUCERCOMPONENT_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   AliHLTEventSummaryProducerComponent.h
+    @author Jochen Thaeder
+    @date   
+    @brief  Produces a event summary as @see AliHLTEventSummary
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#include "AliHLTProcessor.h"
+#include "AliHLTEventSummary.h"
+
+/**
+ * @class  AliHLTEventSummaryProducerComponent
+ * @brief  Produces a event summary as @see AliHLTEventSummary
+ *
+ * This class produces a event summary, updating informations for all subdetectors 
+ * and sends it out for every event.
+ *
+ * @ingroup alihlt_run_statistics alihlt_trigger
+ */
+
+class AliHLTEventSummaryProducerComponent : public AliHLTProcessor {
+  
+public:
+  
+  /** constructor */
+  AliHLTEventSummaryProducerComponent();
+  /** destructor */
+  virtual ~AliHLTEventSummaryProducerComponent();
+
+  // Public functions to implement AliHLTComponent's interface.
+  // These functions are required for the registration process
+  
+  const char* GetComponentID();
+  void GetInputDataTypes( AliHLTComponentDataTypeList& list );
+
+  AliHLTComponentDataType GetOutputDataType();
+
+  virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
+  AliHLTComponent* Spawn();
+
+ protected:
+
+  using AliHLTProcessor::DoEvent;
+
+  // Protected functions to implement AliHLTComponent's interface.
+  // These functions provide initialization as well as the actual processing
+  // capabilities of the component. 
+  
+  /** Initialize the component. */
+  Int_t DoInit( int argc, const char** argv );
+
+  /** DeInitialize the component. */
+  Int_t DoDeinit();
+  
+  /** Process the data in the component */
+  Int_t DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
+
+  // ------------------------------------------------------------------------------------------
+
+  /** Process trigger data block 
+   *  @param  trigData to @see AliHLTComponentTriggerData
+   */
+  void ProcessTriggerData( AliHLTComponentTriggerData& trigData );
+
+private:
+  /** copy constructor prohibited */
+  AliHLTEventSummaryProducerComponent (const AliHLTEventSummaryProducerComponent&);
+
+  /** assignment operator prohibited */
+  AliHLTEventSummaryProducerComponent& operator= (const AliHLTEventSummaryProducerComponent&);
+
+  /** Event summary class*/
+  AliHLTEventSummary* fEventSummary;                                                                  //! transient
+
+  ClassDef(AliHLTEventSummaryProducerComponent, 0);
+
+};
+#endif
+
diff --git a/HLT/trigger/AliHLTRunSummary.cxx b/HLT/trigger/AliHLTRunSummary.cxx
new file mode 100644 (file)
index 0000000..53f5039
--- /dev/null
@@ -0,0 +1,87 @@
+//-*- Mode: C++ -*-
+// $Id$
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ *                                                                        *
+ * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
+ *                  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   AliHLTRunSummary.cxx
+    @author Jochen Thaeder
+    @date   
+    @brief  Summary class for a run, merges all detectors
+*/
+
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+#include "AliHLTRunSummary.h"
+
+ClassImp(AliHLTRunSummary)
+    
+  AliHLTRunSummary::AliHLTRunSummary() :
+    fNEvents(0),
+    fNEventsRejected(0),
+    fRunNumber(0),
+    fRunType(0),
+    fTriggerClasses(),
+    fDetectorArray(NULL) {
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+
+  memset( fTriggerClasses, 0, (gkNCTPTriggerClasses * sizeof(ULong_t)) );
+  
+  fDetectorArray = new TObjArray;
+  fDetectorArray->SetOwner();
+}
+
+AliHLTRunSummary::~AliHLTRunSummary() {
+  // see header file for class documentation
+
+  if ( fDetectorArray )
+    delete fDetectorArray;
+  fDetectorArray = NULL;
+
+}
+
+Bool_t AliHLTRunSummary::AddTriggerClass( Int_t ndx ) {
+  // see header file for class documentation
+
+  Bool_t bResult = kTRUE;
+
+  if ( ndx < gkNCTPTriggerClasses ) fTriggerClasses[ndx]++;
+  else  bResult = kFALSE;
+
+  return bResult;
+}
+
+Bool_t AliHLTRunSummary::AddDetector( TObject * obj ) {
+  // see header file for class documentation
+
+  Bool_t bResult = kTRUE;
+  
+  if ( fDetectorArray ) fDetectorArray->Add( obj );
+  else bResult = kFALSE;
+  
+  return bResult;
+}
diff --git a/HLT/trigger/AliHLTRunSummary.h b/HLT/trigger/AliHLTRunSummary.h
new file mode 100644 (file)
index 0000000..c2e208d
--- /dev/null
@@ -0,0 +1,161 @@
+//-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTRUNSUMMARY_H
+#define ALIHLTRUNSUMMARY_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   AliHLTRunSummary.h
+    @author Jochen Thaeder
+    @date  
+    @brief  Summary class for a run, merges all detectors 
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#include "TObject.h"
+#include "TObjArray.h"
+
+#include "AliHLTDataTypes.h"
+
+/**
+ * @class  AliHLTRunSummary
+ * @brief  Summary class for a run, merges all detectors 
+ *
+ * The run statistic classes hold information / histograms about certain 
+ * characteristica of the processed events. They are devided into 3 parts. 
+ * A base class  @see AliHLTRunStatistics for general Information, detector 
+ * specific classes like @see AliHLTTPCRunStatistics for the TPC and a summary 
+ * class @see AliHLTRunSummary which can hold several detector classes.
+ * 
+ * This is the summary class.
+ * 
+ * See base class @see AliHLTRunStatistics for further information.
+ *
+ * @ingroup alihlt_run_statistics alihlt_trigger
+ */
+
+class AliHLTRunSummary : public TObject {
+  
+public:
+  
+  /** constructor */
+  AliHLTRunSummary();
+  /** destructor */
+  virtual ~AliHLTRunSummary();
+
+  // -- event parameters ------------------------
+
+  /** Set Number of events 
+   *  @param i number of events
+   */
+  void SetNEvents( ULong_t i )           { fNEvents = i; }
+
+  /** Add events */
+  void AddNEvents()                      { fNEvents++; }
+
+  /** Get number of events
+   *  @return number of events
+   */
+  ULong_t GetNEvents() const             { return fNEvents; }
+  /** Set number of rejected events 
+   *  @param i number of events rejected
+   */
+  void SetNEventsRejected( ULong_t i )   { fNEventsRejected = i; }
+
+  /** Add rejected events */
+  void AddNEventsRejected()              { fNEventsRejected++; }
+
+  /** Get number of reejcted events 
+   *  @return number of events rejected
+   */
+  ULong_t GetNEventsRejected() const     { return fNEventsRejected; }
+
+  // -- run parameters ------------------------
+
+  /** Set Run Number 
+   *  @param i run number
+   */
+  void SetRunNumber( AliHLTUInt32_t i )           { fRunNumber = i; }
+
+  /** Get Run Number 
+   *  @return run number
+   */
+  AliHLTUInt32_t GetRunNumber() const             { return  fRunNumber;}
+
+  /** Set Run Type 
+   *  @param i run type
+   */
+  void SetRunType( AliHLTUInt32_t i )             { fRunType = i; }
+
+  /** Get Run Type s
+   *  @return run type
+   */
+  AliHLTUInt32_t GetRunType() const               { return fRunType; }
+
+  // -- trigger parameters ------------------------
+
+  /** Set ocurrance of trigger classe with index ndx
+   *  @param ndx index of Trigger Class   
+   *  @return kTRUE on success
+   */
+  Bool_t AddTriggerClass( Int_t ndx );
+
+  /** Get ocurrance of trigger classes 
+   *  @return ptr to array of trigger classes
+   */
+  const ULong_t* GetTriggerClasses() const { return fTriggerClasses; }
+  ULong_t* GetTriggerClasses()             { return fTriggerClasses; }
+  
+  // -- detector parameters ------------------------
+
+  /** Detector run statistics classes 
+   *  @return ptr to Detector arry
+   */
+  TObjArray* GetDetectorArray ()         { return fDetectorArray; }
+
+  /** Rest the Detector array, all elements are removed */
+  void ResetDetectorArray()              { if ( fDetectorArray ) fDetectorArray->Clear(); }
+
+  /** Add another detector run statistics class to detector arry 
+   *  @param obj to TObject, which should be added
+   *  @return kTRUE on success
+   */
+  Bool_t AddDetector( TObject *obj );
+
+private:
+
+  /** copy constructor prohibited */
+  AliHLTRunSummary (const AliHLTRunSummary&);
+
+  /** assignment operator prohibited */
+  AliHLTRunSummary& operator= (const AliHLTRunSummary&);
+
+  /** Number of events */
+  ULong_t fNEvents;                              // see above
+
+  /** Number of rejected events */
+  ULong_t fNEventsRejected;                      // see above
+
+  /** Run Number */   
+  AliHLTUInt32_t fRunNumber;                     // see above
+
+  /** Run Type */
+  AliHLTUInt32_t fRunType;                       // see above
+
+  /** Ocurrance of trigger classes */
+  ULong_t fTriggerClasses[gkNCTPTriggerClasses]; // see above
+
+  /** Detector run statistics classes */
+  TObjArray* fDetectorArray;                     //! transient
+
+  ClassDef(AliHLTRunSummary, 1);  
+};
+#endif
diff --git a/HLT/trigger/AliHLTRunSummaryProducerComponent.cxx b/HLT/trigger/AliHLTRunSummaryProducerComponent.cxx
new file mode 100644 (file)
index 0000000..4aed004
--- /dev/null
@@ -0,0 +1,183 @@
+//-*- Mode: C++ -*-
+// $Id$
+/**************************************************************************
+ * This file is property of and copyright by the ALICE HLT Project        * 
+ * ALICE Experiment at CERN, All rights reserved.                         *
+ *                                                                        *
+ * Primary Authors: Jochen Thaeder <thaeder@kip.uni-heidelberg.de>        *
+ *                  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   AliHLTRunSummaryProducerComponent.cxx
+    @author Jochen Thaeder
+    @date   
+    @brief  Produces a run summary as @see AliHLTRunSummary
+*/
+
+// see header file for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#if __GNUC__ >= 3
+using namespace std;
+#endif
+
+#include "AliHLTRunSummaryProducerComponent.h"
+#include "AliHLTEventSummary.h"
+#include "AliHLTDataTypes.h"
+#include "AliRawDataHeader.h"
+
+#include <cerrno>
+
+// ** This is a global object used for automatic component registration, do not use this
+AliHLTRunSummaryProducerComponent gAliHLTRunSummaryProducerComponent;
+
+ClassImp(AliHLTRunSummaryProducerComponent)
+    
+// ------------------------------------------------------------------------------------------
+AliHLTRunSummaryProducerComponent::AliHLTRunSummaryProducerComponent() : 
+  fRunSummary(NULL) {
+  // see header file for class documentation
+  // or
+  // refer to README to build package
+  // or
+  // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTRunSummaryProducerComponent::~AliHLTRunSummaryProducerComponent() {
+  // see header file for class documentation
+}
+
+// ------------------------------------------------------------------------------------------
+const char* AliHLTRunSummaryProducerComponent::GetComponentID() {
+  // see header file for class documentation
+  return "TriggerRunSummaryProducer"; 
+}
+
+// ------------------------------------------------------------------------------------------
+void AliHLTRunSummaryProducerComponent::GetInputDataTypes(AliHLTComponentDataTypeList& list) {
+  // see header file for class documentationAliHLTRunSummary
+
+  list.clear(); 
+  list.push_back( kAliHLTDataTypeEventSummary );
+  list.push_back( kAliHLTDataTypeRunStatistics );
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTComponentDataType AliHLTRunSummaryProducerComponent::GetOutputDataType() {
+  // see header file for class documentation
+
+  return kAliHLTDataTypeRunSummary;
+}
+
+// ------------------------------------------------------------------------------------------
+void AliHLTRunSummaryProducerComponent::GetOutputDataSize( unsigned long& constBase, 
+                                                          double& inputMultiplier ) {
+  // see header file for class documentation
+
+  constBase = sizeof( AliHLTRunSummary );
+  inputMultiplier = 0.0;
+}
+
+// ------------------------------------------------------------------------------------------
+AliHLTComponent* AliHLTRunSummaryProducerComponent::Spawn() {
+  // Spawn function, return new instance of this class
+  // see header file for class documentation
+
+  return new AliHLTRunSummaryProducerComponent;
+}
+
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTRunSummaryProducerComponent::DoInit( int /*argc*/, const char** /*argv*/ ) {
+  // see header file for class documentation
+
+  Int_t iResult = 0;
+
+  if ( fRunSummary )
+    return EINPROGRESS;
+  
+  fRunSummary = new AliHLTRunSummary();
+  
+  return iResult;
+}
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTRunSummaryProducerComponent::DoDeinit() {
+  // see header file for class documentation
+
+  if ( fRunSummary )
+    delete fRunSummary;
+  fRunSummary = NULL;
+
+  return 0; 
+}
+
+// ------------------------------------------------------------------------------------------
+Int_t AliHLTRunSummaryProducerComponent::DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& trigData ) {
+  // see header file for class documentation
+
+  // ** Process EventSummary Block
+  AliHLTEventSummary* eventSummary = (AliHLTEventSummary*) GetFirstInputObject ( kAliHLTDataTypeEventSummary, "AliHLTEventSummary" );
+  
+  if ( eventSummary ) 
+    ProcessEventSummary ( eventSummary );   
+
+  // ** Increase Number of Events
+  fRunSummary->AddNEvents();
+
+  // ** Process CTP trigger information
+  ProcessTriggerData( trigData );
+
+  // ** Set RunType / Run Number
+  fRunSummary->SetRunNumber ( GetRunNo() );
+  fRunSummary->SetRunType   ( GetRunType() );
+
+  // ** PushBack Run Summary
+  PushBack ( (TObject*) fRunSummary, sizeof(AliHLTRunSummary), kAliHLTDataTypeRunSummary, (AliHLTUInt32_t) 0 );
+
+  return 0;
+}
+
+// -- **********************************************************************************************
+// -- *******************************   Processing Functions  **************************************
+// -- **********************************************************************************************
+
+// -- **********************************************************************************************
+void AliHLTRunSummaryProducerComponent::ProcessEventSummary( AliHLTEventSummary* eventSummary ) {
+  // see header file for class documentation
+  
+  // ** Check if event was accepted or rejected 
+  if ( ! eventSummary->IsAccepted() )
+    fRunSummary->AddNEventsRejected();
+}
+
+// -- **********************************************************************************************
+void AliHLTRunSummaryProducerComponent::ProcessTriggerData( AliHLTComponentTriggerData& trigData ) {
+  // see header file for class documentation
+  
+  const AliRawDataHeader* cdh = NULL;
+  if (AliHLTComponent::ExtractTriggerData(trigData, NULL, NULL, &cdh, NULL, true) != 0) return;
+  AliHLTUInt64_t triggerClasses = cdh->GetTriggerClasses();
+
+  for ( Int_t ndx = 0; ndx < gkNCTPTriggerClasses; ndx ++ ) {
+    
+    if ( triggerClasses & 0x1 )
+      fRunSummary->AddTriggerClass( ndx );
+    
+    triggerClasses = triggerClasses >> 1;
+  }
+
+}
+
diff --git a/HLT/trigger/AliHLTRunSummaryProducerComponent.h b/HLT/trigger/AliHLTRunSummaryProducerComponent.h
new file mode 100644 (file)
index 0000000..2bd1501
--- /dev/null
@@ -0,0 +1,99 @@
+//-*- Mode: C++ -*-
+// $Id$
+#ifndef ALIHLTRUNSUMMARYPRODUCERCOMPONENT_H
+#define ALIHLTRUNSUMMARYPRODUCERCOMPONENT_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   AliHLTRunSummaryProducerComponent.h
+    @author Jochen Thaeder
+    @date   
+    @brief  Produces a run summary
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
+
+#include "AliHLTProcessor.h"
+#include "AliHLTRunSummary.h"
+#include "AliHLTEventSummary.h"
+
+/**
+ * @class  AliHLTRunSummaryProducerComponent
+ * @brief  Produces a run summary
+ *
+ * This class produces a run summary, updating informations for whole run 
+ * and sends it out for every event, in order to have it displayed with AliEve
+ *
+ * @ingroup alihlt_run_statistics alihlt_trigger
+ */
+
+class AliHLTRunSummaryProducerComponent : public AliHLTProcessor {
+  
+public:
+  
+  /** constructor */
+  AliHLTRunSummaryProducerComponent();
+  /** destructor */
+  virtual ~AliHLTRunSummaryProducerComponent();
+
+  // Public functions to implement AliHLTComponent's interface.
+  // These functions are required for the registration process
+  
+  const char* GetComponentID();
+  void GetInputDataTypes( AliHLTComponentDataTypeList& list );
+
+  AliHLTComponentDataType GetOutputDataType();
+
+  virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
+  AliHLTComponent* Spawn();
+
+ protected:
+
+  using AliHLTProcessor::DoEvent;
+
+  // Protected functions to implement AliHLTComponent's interface.
+  // These functions provide initialization as well as the actual processing
+  // capabilities of the component. 
+  
+  /** Initialize the component. */
+  Int_t DoInit( int argc, const char** argv );
+
+  /** DeInitialize the component. */
+  Int_t DoDeinit();
+  
+  /** Process the data in the component */
+  Int_t DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
+
+  // ------------------------------------------------------------------------------------------
+  /** Process event summary data block 
+   *  @param  eventSummary to @see AliHLTEventSummary
+   */
+  void ProcessEventSummary( AliHLTEventSummary* eventSummary );
+
+  /** Process trigger data block 
+   *  @param  trigData to @see AliHLTComponentTriggerData
+   */
+  void ProcessTriggerData( AliHLTComponentTriggerData& trigData );
+
+private:
+  /** copy constructor prohibited */
+  AliHLTRunSummaryProducerComponent (const AliHLTRunSummaryProducerComponent&);
+
+  /** assignment operator prohibited */
+  AliHLTRunSummaryProducerComponent& operator= (const AliHLTRunSummaryProducerComponent&);
+
+  /** Run summary class*/
+  AliHLTRunSummary* fRunSummary;                                                                     //! transient
+  ClassDef(AliHLTRunSummaryProducerComponent, 0);
+
+};
+#endif
+
index 21a92956d4278d5d75414fea4e76f0f135bce4d8..75eba6338d36c82a7f60c279486a2c6fa1532a8b 100644 (file)
@@ -36,6 +36,8 @@
 #include "TTree.h"
 
 // header files of library components
+#include "AliHLTEventSummaryProducerComponent.h"
+#include "AliHLTRunSummaryProducerComponent.h"
 #include "AliHLTTriggerBarrelMultiplicity.h"
 #include "AliHLTD0Trigger.h"
 #include "AliHLTTriggerITSMultiplicity.h"
index c55a56f7549290cd0143c96c250f12c9517ef574..21ed4df01a3b5adf0764ec09b901d5f1af0355ef 100644 (file)
 #pragma link C++ class AliHLTTriggerITSMultiplicity+;
 #pragma link C++ class AliHLTTriggerBarrelGeomMultiplicity+;
 #pragma link C++ class AliHLTTriggerAgent+;
+#pragma link C++ class AliHLTEventSummary+;
+#pragma link C++ class AliHLTEventSummaryProducerComponent+;
+#pragma link C++ class AliHLTRunSummary+;
+#pragma link C++ class AliHLTRunSummaryProducerComponent+;
 #pragma link C++ class AliHLTTriggerCaloClusterEnergy+;
 #pragma link C++ class AliHLTTriggerPhosClusterEnergy+;
 #pragma link C++ class AliHLTTriggerEmcalClusterEnergy+;