BmnRoot
Loading...
Searching...
No Matches
BmnHypNuclPairFinder.h
Go to the documentation of this file.
1
2#ifndef BMNHYPNUCLPAIRFINDER_H
3#define BMNHYPNUCLPAIRFINDER_H 1
4
5#include "BmnFieldMap.h"
6#include "BmnGlobalTrack.h"
7#include "BmnHypNuclPair.h"
8#include "BmnKalmanFilter.h"
9#include "BmnNewFieldMap.h"
10#include "BmnStripData.h"
11#include "BmnTofHit.h"
12#include "BmnTrigInfoDst.h"
13#include "CbmStsHit.h"
14#include "CbmStsTrack.h"
15#include "CbmVertex.h"
16#include "DstEventHeader.h"
17#include "FairTask.h"
18#include "TFile.h"
19#include "TGeoManager.h"
20#include "TRandom.h"
21#include "UniRun.h"
22
23using namespace std;
24using namespace TMath;
25
26class BmnHypNuclPairFinder : public FairTask
27{
28 private:
29 UInt_t fEventCounter;
30
31 TClonesArray* fStsHits;
32 TClonesArray* fUpperGemClusters;
33 TClonesArray* fLowerGemClusters;
34 TClonesArray* fUpperFsdClusters;
35 TClonesArray* fLowerFsdClusters;
36 TClonesArray* fStsTracks;
37 TClonesArray* fGlobTracks;
38 TClonesArray* fTof700Hits;
39 CbmVertex* fVertex;
40 BmnTrigInfoDst* fTrigger;
41
42 BmnKalmanFilter* fKalman;
43
44 TClonesArray* fParticlePair;
45
46 Float_t massPos;
47 Float_t massNeg;
48
49 const Int_t fPDG1 = 2212; // we use proton insted of he3, because kalman cannot work with ions; 1000020030; //He3
50 const Int_t fPDG2 = -211; // pi-minus
51
52 const Float_t fMassHe4 = 3.7284013;
53 const Float_t fMassHe3 = 2.8094135;
54 const Float_t fMassPi = 0.1395704;
55 const Float_t fMassP = 0.9382721;
56 const Float_t fMassD = 1.8756129;
57
58 Bool_t isExp;
59
60 static const Int_t nSt = 11;
61
62 // parameters for dedx scaling
63 // const Float_t aLow[nSt] = { 1.36, 1.66, 1.51, 1.39, 1.60, 1.39, 1.16, 0.83, 1.10, 1.01, 1.00 };
64 // const Float_t bLow[nSt] = { -345.40, -332.74, -324.52, -364.43, -5.74, -0.76, 10.83, 33.75, 5.49, 18.37, 0.00 };
65 // const Float_t aUpp[nSt] = { 0.92, 0.99, 0.97, 0.84, 1.40, 1.30, 1.18, 0.93, 1.14, 1.07, 1.00 };
66 // const Float_t bUpp[nSt] = { -373.27, -226.39, -259.46, -240.51, 64.50, 64.31, 1.91, 14.73, 4.15, 63.88, 0.00 };
67
68 const Float_t aLow[nSt] = {1.00, 1.00, 1.00, 1.00, 1.66, 1.32, 1.10, 0.85, 1.09, 1.02, 1.00};
69 const Float_t bLow[nSt] = {0.00, 0.00, 0.00, 0.00, -0.99, 2.79, 13.76, 25.16, 6.47, 17.96, 0.00};
70 const Float_t aUpp[nSt] = {1.00, 1.00, 1.00, 1.00, 1.60, 1.48, 1.11, 0.93, 1.14, 0.78, 1.00};
71 const Float_t bUpp[nSt] = {0.00, 0.00, 0.00, 0.00, -4.22, 1.43, 16.15, 14.73, 4.04, 162.81, 0.00};
72
73 public:
75 // hyp = "H3L"/"h3l" or "H4L"/"h4l"
76 BmnHypNuclPairFinder(TString hyp, Bool_t exp = kTRUE);
77 virtual ~BmnHypNuclPairFinder();
78
79 virtual void Exec(Option_t* option);
80 virtual InitStatus Init();
81 virtual void Finish();
82
83 private:
84 void Analysis();
85
86 Float_t FindV0ByVirtualPlanes(FairTrackParam* par1, FairTrackParam* par2, Float_t z_0, Float_t range = 50.);
87 Float_t GetdEdx(CbmStsTrack* tr);
88 void GetNHits(CbmStsTrack* tr, Int_t& nGEM, Int_t& nFSD);
89 Float_t GetSigXTof700He3(FairTrackParam* par);
90 Float_t GetSigYTof700He3(FairTrackParam* par);
91 Float_t GetDyTof700(FairTrackParam* par);
92 Float_t GetDxTof700(FairTrackParam* par);
93
94 map<Float_t, pair<Int_t, Int_t>> FindPairs(TClonesArray* tracks, TClonesArray* hits);
95
96 ClassDef(BmnHypNuclPairFinder, 0)
97};
98
99#endif
friend F32vec4 exp(const F32vec4 &a)
Definition P4_F32vec4.h:122
virtual InitStatus Init()
virtual void Exec(Option_t *option)
STL namespace.