Line data Source code
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 6 : ClassDef(AliHLTTPCTrackHistoComponent, 0);
144 :
145 : };
146 : #endif
|