comp/AliHLTTPCCompModelDeflaterComponent.h
comp/AliHLTTPCCompModelInflater.h
comp/AliHLTTPCCompModelInflaterComponent.h
+ AliHLTTPCEventStatistics.h
+ AliHLTTPCEventStatisticsProducerComponent.h
+ AliHLTTPCRunStatistics.h
+ AliHLTTPCRunStatisticsProducerComponent.h
AliHLTTPCKryptonClusterFinder.h
AliHLTTPCKryptonClusterFinderComponent.h
AliHLTTPCClusterHistoComponent.h
--- /dev/null
+//-*- 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;
+}
--- /dev/null
+//-*- 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
--- /dev/null
+//-*- 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 );
+}
--- /dev/null
+ //-*- 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
+
--- /dev/null
+//-*- 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;
+}
--- /dev/null
+//-*- 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
--- /dev/null
+//-*- 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;
+ }
+
+}
+
--- /dev/null
+//-*- 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
+
#include "TTree.h"
// header files of library components
+#include "AliHLTEventSummaryProducerComponent.h"
+#include "AliHLTRunSummaryProducerComponent.h"
#include "AliHLTTriggerBarrelMultiplicity.h"
#include "AliHLTD0Trigger.h"
#include "AliHLTTriggerITSMultiplicity.h"
#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+;