]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TPCLib/AliHLTTPCTrackMCMarkerComponent.h
Component to assign MC labels to TPC tracks (didn't found a better name than TrackMCM...
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCTrackMCMarkerComponent.h
diff --git a/HLT/TPCLib/AliHLTTPCTrackMCMarkerComponent.h b/HLT/TPCLib/AliHLTTPCTrackMCMarkerComponent.h
new file mode 100644 (file)
index 0000000..9a4eff7
--- /dev/null
@@ -0,0 +1,124 @@
+// ************************************************************************
+// 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                               *
+//                                                                        *
+//*************************************************************************
+
+
+#ifndef ALIHLTTPTRACKMCMARKERCOMPONENT_H
+#define ALIHLTTPTRACKMCMARKERCOMPONENT_H
+
+/** @file   AliHLTTPCTrackMCMarkerComponent.h
+    @author Matthias Kretz
+    @date
+    @brief  HLT TPC CA global merger component.
+*/
+
+#include "AliHLTProcessor.h"
+#include "AliHLTTPCClusterFinder.h"
+
+/**
+ * @class AliHLTTPCTrackMCMarkerComponent
+ * Assigns MC labels to the TPC tracks 
+ */
+class AliHLTTPCTrackMCMarkerComponent : public AliHLTProcessor
+{
+  public:
+    /**
+     * Constructs a AliHLTTPCTrackMCMarkerComponent.
+     */
+    AliHLTTPCTrackMCMarkerComponent();
+
+    /**
+     * Destructs the AliHLTTPCTrackMCMarkerComponent
+     */
+    virtual ~AliHLTTPCTrackMCMarkerComponent() {};
+
+    // Public functions to implement AliHLTComponent's interface.
+    // These functions are required for the registration process
+
+    /**
+     * @copydoc AliHLTComponent::GetComponentID
+     */
+    const char *GetComponentID();
+
+    /**
+     * @copydoc AliHLTComponent::GetInputDataTypes
+     */
+    void GetInputDataTypes( AliHLTComponentDataTypeList &list );
+
+    /**
+     * @copydoc AliHLTComponent::GetOutputDataType
+     */
+    AliHLTComponentDataType GetOutputDataType();
+
+    /**
+     * @copydoc AliHLTComponent::GetOutputDataSize
+     */
+    virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
+
+    /**
+     * @copydoc AliHLTComponent::Spawn
+     */
+    AliHLTComponent *Spawn();
+
+  protected:
+
+    // Protected functions to implement AliHLTComponent's interface.
+    // These functions provide initialization as well as the actual processing
+    // capabilities of the component.
+
+    /**
+     * @copydoc AliHLTComponent::DoInit
+     */
+    int DoInit( int argc, const char **argv );
+
+    /**
+     * @copydoc AliHLTComponent::DoDeinit
+     */
+    int DoDeinit();
+
+    /** reconfigure **/
+    int Reconfigure( const char* cdbEntry, const char* chainId );
+
+    /**
+     * @copydoc @ref AliHLTProcessor::DoEvent
+     */
+    int DoEvent( const AliHLTComponentEventData &evtData, const AliHLTComponentBlockData *blocks,
+                 AliHLTComponentTriggerData &trigData, AliHLTUInt8_t *outputPtr,
+                 AliHLTUInt32_t &size, AliHLTComponentBlockDataList &outputBlocks );
+
+    using AliHLTProcessor::DoEvent;
+
+  private:
+
+    static AliHLTTPCTrackMCMarkerComponent fgAliHLTTPCTrackMCMarkerComponent;
+
+    // disable copy
+    AliHLTTPCTrackMCMarkerComponent( const AliHLTTPCTrackMCMarkerComponent & );
+    AliHLTTPCTrackMCMarkerComponent &operator=( const AliHLTTPCTrackMCMarkerComponent & );
+
+    /** set configuration parameters **/
+    void SetDefaultConfiguration();
+    int ReadConfigurationString(  const char* arguments );
+    int ReadCDBEntry( const char* cdbEntry, const char* chainId );
+    int Configure( const char* cdbEntry, const char* chainId, const char *commandLine );
+
+    /**
+     * Get MC label for a track
+     * @param hits array of track hit Id's
+     * @param nHits n of hits
+     * @return neg. -1 if failed
+     */
+    int GetTrackMCLabel( unsigned int *hits, int nHits );
+
+    /** array of pointers to cluster MC labels **/
+
+    AliHLTTPCClusterFinder::ClusterMCInfo *fClusterLabels[36*6]; //! cluster MC labels for each TPC patch
+    Int_t fNClusterLabels[36*6]; //! Number of MC labels, for check of consistensy
+
+    ClassDef( AliHLTTPCTrackMCMarkerComponent, 0 )
+};
+
+#endif