When Pt is bad defined (ex. no field), the multiple scattering effect is calculated...
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCTrackHistoComponent.h
CommitLineData
dadc7068 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
a267c68e 13 @brief Component for track histo
dadc7068 14*/
15
16#include "AliHLTProcessor.h"
17#include "AliHLTTPCSpacePointData.h"
18#include "AliHLTTPCTrackSegmentData.h"
19
20class AliHLTTPCConfMapper;
a267c68e 21class TNtuple;
2c95fda7 22class TH1F;
23class TProfile;
a267c68e 24class AliHLTTPCTrackArray;
2c95fda7 25class AliHLTTPCTrack;
dadc7068 26
27/**
28 * @class AliHLTTPCTrackHistoComponent
29 * Component for ploting proparties of Tracks.
a267c68e 30 * The component gives out two NTuples. One for cluster- and one for track proprties
dadc7068 31 *
a9f47f83 32 * <h2>General properties:</h2>
33 *
dadc7068 34 * Component ID: \b TPCTrackHisto <br>
a090f4a6 35 * Library: \b libAliHLTTPC.so <br>
36 * Input Data Types: AliHLTTPCDefinitions::fgkClustersDataType,
37 * AliHLTTPCDefinitions::fgkTrackSegmentsDataType or
38 * AliHLTTPCDefinitions::fgkTracksDataType <br>
60b7c556 39 * Output Data Types: ::kAliHLTDataTypeTNtuple <br>
dadc7068 40 *
a9f47f83 41 * <h2> Mandatory arguments: </h2>
a267c68e 42 * \li No mandaroty arguments.
dadc7068 43 *
a9f47f83 44 * <h2> Optional arguments: </h2>
dadc7068 45 *
a9f47f83 46 * <h2>Configuration:</h2>
47 *
48 *
49 * <h2>Default CDB entries:</h2>
50 * The component has for now no CDB entry
51 *
52 * <h2>Performance:</h2>
53 * Not Tested
54 *
55 * <h2>Memory consumption:</h2>
56 * Not Tested
57 *
58 * <h2>Output size:</h2>
a267c68e 59 * Size varibles in Ntuple
a9f47f83 60 *
61 *
62 *
a090f4a6 63 * @ingroup alihlt_tpc_components
dadc7068 64 */
65class AliHLTTPCTrackHistoComponent : public AliHLTProcessor
66{
67public:
68 /** default constructor */
69 AliHLTTPCTrackHistoComponent();
70 /** destructor */
71 virtual ~AliHLTTPCTrackHistoComponent();
72
73 // Public functions to implement AliHLTComponent's interface.
74 // These functions are required for the registration process
75
9783a5cf 76 /** interface function, see AliHLTComponent for description */
dadc7068 77 const char* GetComponentID();
9783a5cf 78 /** interface function, see AliHLTComponent for description */
dadc7068 79 void GetInputDataTypes(AliHLTComponentDataTypeList& list);
9783a5cf 80 /** interface function, see AliHLTComponent for description */
dadc7068 81 AliHLTComponentDataType GetOutputDataType();
9783a5cf 82 /** interface function, see AliHLTComponent for description */
2c95fda7 83 int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
84 /** interface function, see AliHLTComponent for description */
dadc7068 85 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
9783a5cf 86 /** interface function, see AliHLTComponent for description */
dadc7068 87 AliHLTComponent* Spawn();
88
89protected:
90
91 // Protected functions to implement AliHLTComponent's interface.
92 // These functions provide initialization as well as the actual processing
93 // capabilities of the component.
94
9783a5cf 95 /** interface function, see AliHLTComponent for description */
dadc7068 96 int DoInit( int argc, const char** argv );
9783a5cf 97 /** interface function, see AliHLTComponent for description */
dadc7068 98 int DoDeinit();
9783a5cf 99 /** interface function, see AliHLTComponent for description */
dadc7068 100 int DoEvent( const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& trigData );
101
102 using AliHLTProcessor::DoEvent;
103
104private:
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 int Configure(const char* arguments);
115
116 void ReadTracks(const AliHLTComponentBlockData* iter,Int_t &tt);
117
118 void PushHisto();
a267c68e 119 void FillResidual( UInt_t pos,AliHLTUInt8_t slice,AliHLTUInt8_t patch,Float_t& resy,Float_t& resz);
2c95fda7 120
121 Double_t GetTrackLength(AliHLTTPCTrack *hltTrack);
dadc7068 122
e2a9091e 123 AliHLTUInt8_t fMinSlice; //! transient
124 AliHLTUInt8_t fMaxSlice; //! transient
125 AliHLTUInt8_t fMinPartition; //! transient
126 AliHLTUInt8_t fMaxPartition; //! transient
2c95fda7 127
128 Int_t fNEvents; //! transient
129 Int_t fNtotTracks; //! transient
130
131 Int_t fNEvtMod; //! number of events reached to reset the counter
132 // Bool_t fReset; //! Reset track counter every certain events
133
134 TH1F *fMeanMultiplicity; //! transient (mean multiplicity for every 20 evts vs. #evt by Z.Y.)
135 TH1F *fMultiplicity; //! transient (track multiplicity by Z.Y.)
136
137 // TH2F *fNClusterVsXY; //! transient (#Clusters vs. x, y positions, by ZY)
138 // TH2F *fChargeVsXY; //! transient (Charge distr. vs. x, y added by ZY)
139 TProfile *fDeDxVsP; //! transient (dEdX vs. p)
140
e2a9091e 141 TNtuple *fClusters; //! transient
142 TNtuple *fTracks; //! transient
a9f47f83 143
e2a9091e 144 vector<UInt_t> fTrackClusterID[36][6]; //! transient
145
146 AliHLTTPCTrackArray *fTracksArray; //! transient
147 AliHLTTPCSpacePointData *fClustersArray[36][6]; //! transient
148 UInt_t fNSpacePoints[36][6]; //! transient
dadc7068 149
2c95fda7 150 ClassDef(AliHLTTPCTrackHistoComponent, 2);
dadc7068 151
152};
153#endif