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