]>
Commit | Line | Data |
---|---|---|
f078d002 | 1 | //-*- Mode: C++ -*- |
2 | // $Id$ | |
3 | #ifndef ALIHLTV0FINDERCOMPONENT_H | |
4 | #define ALIHLTV0FINDERCOMPONENT_H | |
5 | /// This file is property of and copyright by the ALICE HLT Project | |
6 | /// ALICE Experiment at CERN, All rights reserved. | |
7 | /// See cxx source for full Copyright notice | |
8 | ||
9 | /// @file AliHLTV0FinderComponent.h | |
10 | /// @author Timur Pocheptsov | |
11 | /// @date 2010-12-26 | |
12 | /// @brief V0 finder component | |
13 | /// | |
14 | ||
15 | #include <vector> | |
16 | ||
17 | #include "AliHLTVertexFinderBase.h" | |
18 | #include "AliKFVertex.h" | |
19 | ||
20 | class AliHLTV0FinderComponent : public AliHLTVertexFinderBase | |
21 | { | |
22 | public: | |
23 | AliHLTV0FinderComponent(); | |
24 | ||
25 | //AliHLTComponent's final-overriders. | |
26 | const char* GetComponentID(); | |
27 | void GetInputDataTypes(AliHLTComponentDataTypeList& list); | |
28 | AliHLTComponentDataType GetOutputDataType(); | |
29 | int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList); | |
30 | void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier); | |
31 | AliHLTComponent* Spawn(); | |
32 | ||
33 | int DoInit(int argc, const char** argv); | |
34 | int ScanConfigurationArgument(int argc, const char** argv); | |
35 | int DoDeinit(); | |
36 | ||
37 | using AliHLTProcessor::DoEvent; | |
38 | int DoEvent(const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData); | |
39 | ||
40 | private: | |
41 | //Aux. staff. | |
42 | ||
43 | //Read AliKFVertex, produced by primary finder. | |
44 | bool ReadPrimaryVertex(); | |
45 | //Read input tracks. | |
46 | bool ReadTracks(); | |
47 | // | |
48 | void FindPrimaryDeviations(); | |
49 | //If track (id) is from primary. | |
50 | bool IsPrimaryTrack(int id)const; | |
51 | // | |
52 | void FindV0s(); | |
53 | //PushBack the output (v0s pairs' indices). | |
54 | int DoOutput(); | |
55 | ||
56 | AliKFVertex fPrimaryVtx; //Primary vertex. | |
57 | std::vector<int> fPrimaryTracks; //"bit mask": 1 - track is prim, 0 - no. | |
58 | int fNPrimaryTracks; //Number of primary tracks. | |
59 | int fMinPrimID; //Min id of primary tracks. | |
60 | int fMaxPrimID; //Max id of primary tracks. | |
61 | ||
62 | //V0 finder cuts. | |
63 | double fDaughterPrimDeviation; //daughters deviation from prim vertex >= cut | |
64 | double fPrimDeviation; //v0 deviation from prim vertex <= cut | |
65 | double fChi; //v0 sqrt(chi^2/NDF) <= cut | |
66 | double fDecayLengthInSigmas; //v0 decay length/sigma_length >= cut | |
67 | int fPosPID; //Pid for a positive track, when constracting v0. | |
68 | int fNegPID; //Pid for a negative track, when constracting v0. | |
69 | ||
70 | //Output of V0 finder. | |
71 | std::vector<int> fV0s; //Indices of track pairs, participating in a V0s. | |
72 | ||
73 | //For gammas, special version of AliKFParitcle must be constructed. | |
74 | bool fGammaFinder; | |
75 | ||
76 | //defaults for cuts. | |
77 | static const double fgDaughterPrimDeviation; | |
78 | static const double fgPrimDeviation; | |
79 | static const double fgChi; | |
80 | static const double fgDecayLengthInSigmas; | |
81 | ||
82 | //Compiler generated dtor, copy-ctor and copy-assignment operators are ok. | |
83 | ||
84 | ClassDef(AliHLTV0FinderComponent, 0); | |
85 | }; | |
86 | ||
87 | #endif |