]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/AliHLTTPCTrackHistoComponent.h
data structures for MC labels of TPC clusters are moved from AliHLTTPCClusterFinder...
[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 TNtuple;
21 class TH1F;
22 class TProfile;
23
24 /**
25  * @class AliHLTTPCTrackHistoComponent
26  * Component for plotting proparties of Tracks. 
27  * The component gives out 2 NTuples. One for cluster and one for track properties
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::fgkTracksDataType <br>
35  * Output Data Types: ::kAliHLTDataTypeTNtuple <br> 
36  *
37  * <h2> Mandatory arguments: </h2>
38  * \li No mandaroty arguments. 
39  * 
40  * <h2> Optional arguments: </h2>
41  * 
42  * <h2>Configuration:</h2>
43  * 
44  *
45  * <h2>Default CDB entries:</h2>
46  * The component has for now no CDB entry
47  *
48  * <h2>Performance:</h2>
49  * Not Tested 
50  *
51  * <h2>Memory consumption:</h2>
52  * Not Tested
53  *
54  * <h2>Output size:</h2>
55  * Size variables in Ntuple
56  *
57  * @ingroup alihlt_tpc_components
58  */
59 class AliHLTTPCTrackHistoComponent : public AliHLTProcessor
60 {
61 public:
62   /** default constructor */
63   AliHLTTPCTrackHistoComponent();
64   /** destructor */
65   virtual ~AliHLTTPCTrackHistoComponent();
66
67   // Public functions to implement AliHLTComponent's interface.
68   // These functions are required for the registration process
69
70   /** interface function, see AliHLTComponent for description */
71   const char* GetComponentID();
72   /** interface function, see AliHLTComponent for description */
73   void GetInputDataTypes(AliHLTComponentDataTypeList& list);
74   /** interface function, see AliHLTComponent for description */
75   AliHLTComponentDataType GetOutputDataType();
76   /** interface function, see AliHLTComponent for description */
77   int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
78   /** interface function, see AliHLTComponent for description */
79   virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
80   /** interface function, see AliHLTComponent for description */
81   AliHLTComponent* Spawn();
82   /** interface function, see @ref AliHLTComponent for description */
83   void GetOCDBObjectDescription( TMap* const targetMap);
84
85 protected:
86
87   // Protected functions to implement AliHLTComponent's interface.
88   // These functions provide initialization as well as the actual processing
89   // capabilities of the component. 
90
91   /** interface function, see AliHLTComponent for description */
92   int DoInit( int argc, const char** argv );
93   /** interface function, see AliHLTComponent for description */
94   int DoDeinit();
95   /** interface function, see AliHLTComponent for description */
96   int DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& trigData );
97   /** inherited from AliHLTComponent: handle re-configuration event */
98   int Reconfigure(const char* cdbEntry, const char* chainId);
99   /** inherited from AliHLTComponent, scan one argument and its parameters */
100   int ScanConfigurationArgument(int argc, const char** argv);
101
102   using AliHLTProcessor::DoEvent;
103   
104 private:
105   /** copy constructor prohibited */
106   AliHLTTPCTrackHistoComponent(const AliHLTTPCTrackHistoComponent&);
107   /** assignment operator prohibited */
108   AliHLTTPCTrackHistoComponent& operator=(const AliHLTTPCTrackHistoComponent&);
109   /**
110    * Configure the component.
111    * Parse a string for the configuration arguments and set the component
112    * properties.
113    */ 
114   
115   void ReadTracks(const AliHLTComponentBlockData* iter,Int_t &tt);
116
117   void PushHisto();
118  
119   Int_t fNEvents;    //! transient
120   Int_t fNtotTracks; //! transient
121
122   Int_t fEvtMod;     //! number of events reached to reset the counter
123   Int_t fBufferSize; //! size of circular buffer (number of entries) for the ntuples
124   Bool_t fdEdx;      //! plot dEdx
125   //  Bool_t fReset;  //! Reset track counter every certain events
126
127   TH1F *fMeanMultiplicity; //! transient (mean multiplicity for every 20 evts vs. #evt by Z.Y.)
128   TH1F *fMultiplicity;     //! transient (track multiplicity by Z.Y.)
129   //TH1F *fdNdEta;           //! transient (dN/dEta)
130      
131   //TH2F *fNClusterVsXY;   //! transient (#Clusters vs. x, y positions, by ZY)
132   //TH2F *fChargeVsXY;     //! transient (Charge distr. vs. x, y added by ZY)
133   TProfile *fDeDxVsP;    //! transient (dEdX vs. p)
134
135   TNtuple *fClusters;                             //! transient  
136   TNtuple *fTracks;                               //! transient
137
138   AliHLTTPCSpacePointData *fClustersArray[36][6]; //! transient
139   UInt_t                   fNSpacePoints[36][6];  //! transient
140   
141   /** the default configuration entry for this component */
142   static const char* fgkOCDBEntry; //!transient
143
144   ClassDef(AliHLTTPCTrackHistoComponent, 0);
145
146 };
147 #endif