]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/AliHLTTPCTrackHistoComponent.h
- overload function FillTracksChecked in AliHLTTPCTrackArray.* to make it work with...
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCTrackHistoComponent.h
1 // XEmacs -*-C++-*-
2 // $Id$
3
4 #ifndef ALIHLTTPCTRACKHISTOCOMPONENT_H
5 #define ALIHLTTPCTRACKHISTOCOMPONENT_H
6 //* This file is property of and copyright by the ALICE HLT Project        * 
7 //* ALICE Experiment at CERN, All rights reserved.                         *
8 //* See cxx source for full Copyright notice                               *
9
10 /** @file   AliHLTTPCTrackHistoComponent.h
11     @author Gaute Ovrebekk
12     @date   
13     @brief  Component for track histo
14 */
15
16 #include "AliHLTProcessor.h"
17 #include "AliHLTTPCSpacePointData.h"
18 #include "AliHLTTPCTrackSegmentData.h"
19
20 class AliHLTTPCConfMapper;
21 class TNtuple;
22 class AliHLTTPCTrackArray;
23
24 /**
25  * @class AliHLTTPCTrackHistoComponent
26  * Component for ploting proparties of Tracks. 
27  * The component gives out two NTuples. One for cluster- and one for track proprties
28  * 
29  * <h2>General properties:</h2> 
30  *
31  * Component ID: \b TPCTrackHisto <br>
32  * Library: \b libAliHLTTPC.so <br>
33  * Input Data Types: AliHLTTPCDefinitions::fgkClustersDataType,
34  *                   AliHLTTPCDefinitions::fgkTrackSegmentsDataType or
35  *                   AliHLTTPCDefinitions::fgkTracksDataType <br>
36  * Output Data Types: ::kAliHLTDataTypeTNtuple <br> 
37  *
38  * <h2> Mandatory arguments: </h2>
39  * \li No mandaroty arguments. 
40  * 
41  * <h2> Optional arguments: </h2>
42  * 
43  * <h2>Configuration:</h2>
44  * 
45  *
46  * <h2>Default CDB entries:</h2>
47  * The component has for now no CDB entry
48  *
49  * <h2>Performance:</h2>
50  * Not Tested 
51  *
52  * <h2>Memory consumption:</h2>
53  * Not Tested
54  *
55  * <h2>Output size:</h2>
56  * Size varibles in Ntuple
57  *
58  * 
59  *
60  * @ingroup alihlt_tpc_components
61  */
62 class AliHLTTPCTrackHistoComponent : public AliHLTProcessor
63 {
64 public:
65   /** default constructor */
66   AliHLTTPCTrackHistoComponent();
67   /** destructor */
68   virtual ~AliHLTTPCTrackHistoComponent();
69
70   // Public functions to implement AliHLTComponent's interface.
71   // These functions are required for the registration process
72
73   /** interface function, see AliHLTComponent for description */
74   const char* GetComponentID();
75   /** interface function, see AliHLTComponent for description */
76   void GetInputDataTypes(AliHLTComponentDataTypeList& list);
77   /** interface function, see AliHLTComponent for description */
78   AliHLTComponentDataType GetOutputDataType();
79   /** interface function, see AliHLTComponent for description */
80   virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
81   /** interface function, see AliHLTComponent for description */
82   AliHLTComponent* Spawn();
83
84 protected:
85
86   // Protected functions to implement AliHLTComponent's interface.
87   // These functions provide initialization as well as the actual processing
88   // capabilities of the component. 
89
90   /** interface function, see AliHLTComponent for description */
91   int DoInit( int argc, const char** argv );
92   /** interface function, see AliHLTComponent for description */
93   int DoDeinit();
94   /** interface function, see AliHLTComponent for description */
95   int DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& trigData );
96
97   using AliHLTProcessor::DoEvent;
98   
99 private:
100   /** copy constructor prohibited */
101   AliHLTTPCTrackHistoComponent(const AliHLTTPCTrackHistoComponent&);
102   /** assignment operator prohibited */
103   AliHLTTPCTrackHistoComponent& operator=(const AliHLTTPCTrackHistoComponent&);
104   /**
105    * Configure the component.
106    * Parse a string for the configuration arguments and set the component
107    * properties.
108    */ 
109   int Configure(const char* arguments);
110  
111   void ReadTracks(const AliHLTComponentBlockData* iter,Int_t &tt);
112
113   void PushHisto();
114   void FillResidual( UInt_t pos,AliHLTUInt8_t slice,AliHLTUInt8_t patch,Float_t& resy,Float_t& resz);
115  
116   AliHLTUInt8_t fMinSlice;     //! transient
117   AliHLTUInt8_t fMaxSlice;     //! transient
118   AliHLTUInt8_t fMinPartition; //! transient
119   AliHLTUInt8_t fMaxPartition; //! transient
120  
121   TNtuple *fClusters;                             //! transient  
122   TNtuple *fTracks;                               //! transient
123
124   vector<UInt_t> fTrackClusterID[36][6];          //! transient
125  
126   AliHLTTPCTrackArray     *fTracksArray;          //! transient
127   AliHLTTPCSpacePointData *fClustersArray[36][6]; //! transient
128   UInt_t                   fNSpacePoints[36][6];  //! transient
129
130   ClassDef(AliHLTTPCTrackHistoComponent, 1);
131
132 };
133 #endif