BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnTofHitProducer.h
Go to the documentation of this file.
1
//--------------------------------------------------------------------------------------------------------------------------------------
2
#ifndef __BmnTofHitProducer_H
3
#define __BmnTofHitProducer_H 1
4
5
#include "BmnTof2Digit.h"
6
#include "
BmnTof2Raw2DigitNew.h
"
7
#include "BmnTofGeoUtils.h"
8
#include "BmnTofHitProducerIdeal.h"
9
#include "BmnTrigDigit.h"
10
11
#include <FairTask.h>
12
#include <
TClonesArray.h
>
13
#include <map>
14
#include <math.h>
15
16
#define TOF2_MAX_CHAMBERS 59
17
#define TOF2_MAX_STRIPS_IN_CHAMBER 32
18
19
#define STRIP_CORRECTIONS 1
20
#define LIST_CHAMBER_CORRECTIONS 0
21
#define LIST_STRIP_CORRECTIONS 0
22
// CVERS=0 - use last calibration tables, 1 - use *;1 version
23
#define CVERS 1
24
25
class
TRandom2
;
26
class
TEfficiency
;
27
class
TH1D
;
28
class
TH2D
;
29
class
BmnTofGeoUtils;
30
31
class
BmnTofHitProducer
:
public
BmnTofHitProducerIdeal
32
{
33
Double_t
fMCTime
[
TOF2_MAX_CHAMBERS
];
34
Double_t
fMCTimeSigma
[
TOF2_MAX_CHAMBERS
];
35
36
Double_t
tofcalc
[
TOF2_MAX_CHAMBERS
] = {0.f};
37
Double_t
tofcals
[
TOF2_MAX_CHAMBERS
][32] = {{0.f}};
38
39
Double_t
fTimeSigma
;
// Uncertainties of time, gaus sigma [ns], default: 100 ps
40
Double_t
fErrX
,
fErrY
;
// Uncertainties of coordinates, gaus sigma [cm], dX= 10./sqrt(12.) mm, default: dY= 5 mm.
41
TRandom2
*
pRandom
;
//!
42
43
Bool_t
fDoINL
;
44
Bool_t
fDoSlewing
;
45
46
// QA test histos
47
TEfficiency
*
effTestEfficiencySingleHit
, *
effTestEfficiencyDoubleHit
;
//!
48
TH1D
*
htR
, *
h1TestDistance
, *
h1TestMass
, *
h1TestMassLong
, *
h1TestOccupancyTimeShift
,
49
*
h1TestOccupancyPositionShift
;
//!
50
TH2D
*
h2TestNeighborPair
, *
h2TestXYSmeared
, *
h2TestXYSmeared2
, *
h2TestXYSmearedDouble
, *
h2TestXYSmearedDouble2
,
51
*
h2TestEtaPhi
, *
h2TestStrips
, *
h2TestRZ
, *
h2TdetIdStripId
;
//!
52
53
Bool_t
HitExist
(
Double_t
val);
54
Bool_t
DoubleHitExist
(
Double_t
val);
55
56
BmnTofGeoUtils*
pGeoUtils
;
//!
57
58
const
char
*
fgeomFile
;
//!
59
60
const
char
*
fMCTimeFile
;
//!
61
62
const
char
*
fProtonTimeCorrectionFile
;
//!
63
64
const
double
fSignalVelosity
;
// [ns/cm]
65
66
// input- strip edge position & signal times; output- strip crosspoint; return false, if crosspoint outside strip
67
Int_t
MergeHitsOnStripNew
(
void
);
68
bool
GetCrossPoint
(
const
TVector3
& p1,
double
time1,
const
TVector3
& p2,
double
time2,
TVector3
& crossPoint);
69
bool
GetCrossPoint
(
const
LStrip* pStrip,
double
dtime,
TVector3
& crossPoint);
70
Double_t
CalculateToF
(
BmnTof2Digit
* d1,
BmnTof2Digit
* d2,
BmnTrigDigit
* t0);
71
BmnTof2Raw2DigitNew
*
fTOF2
;
//!
72
Int_t
fMainStripSelection
;
73
Int_t
fSelectXYCalibration
;
74
Double_t
fTimeMin
;
75
Double_t
fTimeMax
;
76
Double_t
fDiffTimeMaxSmall
;
77
Double_t
fDiffTimeMaxBig
;
78
79
public
:
80
BmnTofHitProducer
(
const
char
* name =
"TOF HitProducer"
,
81
const
char
* geomFile =
""
,
82
Bool_t
useMCdata =
true
,
83
Int_t
verbose = 1,
84
Bool_t
DoTest =
false
);
85
virtual
~BmnTofHitProducer
();
86
87
virtual
InitStatus
Init
();
88
virtual
void
Exec
(
Option_t
* opt);
89
virtual
void
Finish
();
90
91
virtual
void
OnlineWrite
(
const
std::unique_ptr<TTree>& resultTree);
92
93
void
SetTimeResolution
(
Double_t
sigma) {
fTimeSigma
= sigma; };
94
void
SetAlongStripResolution
(
Double_t
Xerr) {
fErrX
= Xerr; };
95
void
SetSeed
(
UInt_t
seed = 0);
96
97
void
SetDoINL
(
bool
val) {
fDoINL
= val; }
98
void
SetDoSlewing
(
bool
val) {
fDoSlewing
= val; }
99
void
SetMainStripSelection
(
Int_t
s = 0) {
fMainStripSelection
= s; };
100
void
SetSelectXYCalibration
(
Int_t
s = 0) {
fSelectXYCalibration
= s; };
101
void
SetTimeMin
(
Double_t
mi = -2.) {
fTimeMin
= mi; };
102
void
SetTimeMax
(
Double_t
ma = +15.) {
fTimeMax
= ma; };
103
void
SetDiffTimeMaxSmall
(
Double_t
ds = 0.) {
fDiffTimeMaxSmall
= ds; };
104
void
SetDiffTimeMaxBig
(
Double_t
db = 0.) {
fDiffTimeMaxBig
= db; };
105
106
TString
GetParameters
()
107
{
108
char
s[32];
109
TString
buf =
"\n Run parameters: fTimeSigma="
;
110
sprintf(s,
"%.5g"
,
fTimeSigma
);
111
buf += (s);
112
buf +=
" ns, fErrX="
;
113
sprintf(s,
"%.4g"
,
fErrX
);
114
buf += (s);
115
buf +=
" cm, fErrY="
;
116
sprintf(s,
"%.4g"
,
fErrY
);
117
buf += (s);
118
buf +=
" cm, fDoTest="
;
119
buf += fDoTest;
120
buf +=
", fDoMergeHits="
;
121
buf += fDoMergeHits;
122
buf +=
", fDoINL="
;
123
buf +=
fDoINL
;
124
buf +=
", fDoSlewing="
;
125
buf +=
fDoSlewing
;
126
return
buf;
127
}
128
129
int
readMCTimeFile
(
const
char
*);
130
void
SetMCTimeFile
(
const
char
* file) {
fMCTimeFile
= file; }
131
void
SetProtonTimeCorrectionFile
(
const
char
* file) {
fProtonTimeCorrectionFile
= file; }
132
133
ClassDef
(
BmnTofHitProducer
, 2);
134
};
135
136
#endif
BmnTof2Raw2DigitNew.h
TOF2_MAX_CHAMBERS
#define TOF2_MAX_CHAMBERS
Definition
BmnTofHitProducer.h:16
Bool_t
bool Bool_t
Int_t
int Int_t
UInt_t
unsigned int UInt_t
Double_t
double Double_t
Option_t
const char Option_t
ClassDef
#define ClassDef(name, id)
TClonesArray.h
BmnTof2Digit
Definition
BmnTof2Digit.h:10
BmnTof2Raw2DigitNew
Definition
BmnTof2Raw2DigitNew.h:52
BmnTofHitProducerIdeal
BmnTofHitProducer
Definition
BmnTofHitProducer.h:32
BmnTofHitProducer::fErrY
Double_t fErrY
Definition
BmnTofHitProducer.h:40
BmnTofHitProducer::CalculateToF
Double_t CalculateToF(BmnTof2Digit *d1, BmnTof2Digit *d2, BmnTrigDigit *t0)
Definition
BmnTofHitProducer.cxx:869
BmnTofHitProducer::tofcalc
Double_t tofcalc[TOF2_MAX_CHAMBERS]
Definition
BmnTofHitProducer.h:36
BmnTofHitProducer::SetTimeResolution
void SetTimeResolution(Double_t sigma)
Definition
BmnTofHitProducer.h:93
BmnTofHitProducer::h1TestOccupancyTimeShift
TH1D * h1TestOccupancyTimeShift
Definition
BmnTofHitProducer.h:48
BmnTofHitProducer::h1TestOccupancyPositionShift
TH1D * h1TestOccupancyPositionShift
Definition
BmnTofHitProducer.h:49
BmnTofHitProducer::SetDiffTimeMaxSmall
void SetDiffTimeMaxSmall(Double_t ds=0.)
Definition
BmnTofHitProducer.h:103
BmnTofHitProducer::fDiffTimeMaxSmall
Double_t fDiffTimeMaxSmall
Definition
BmnTofHitProducer.h:76
BmnTofHitProducer::fMCTime
Double_t fMCTime[TOF2_MAX_CHAMBERS]
Definition
BmnTofHitProducer.h:33
BmnTofHitProducer::h2TestXYSmeared2
TH2D * h2TestXYSmeared2
Definition
BmnTofHitProducer.h:50
BmnTofHitProducer::pGeoUtils
BmnTofGeoUtils * pGeoUtils
Definition
BmnTofHitProducer.h:56
BmnTofHitProducer::SetDoSlewing
void SetDoSlewing(bool val)
Definition
BmnTofHitProducer.h:98
BmnTofHitProducer::pRandom
TRandom2 * pRandom
Definition
BmnTofHitProducer.h:41
BmnTofHitProducer::fMCTimeFile
const char * fMCTimeFile
Definition
BmnTofHitProducer.h:60
BmnTofHitProducer::h2TestEtaPhi
TH2D * h2TestEtaPhi
Definition
BmnTofHitProducer.h:51
BmnTofHitProducer::h2TestStrips
TH2D * h2TestStrips
Definition
BmnTofHitProducer.h:51
BmnTofHitProducer::h2TdetIdStripId
TH2D * h2TdetIdStripId
Definition
BmnTofHitProducer.h:51
BmnTofHitProducer::tofcals
Double_t tofcals[TOF2_MAX_CHAMBERS][32]
Definition
BmnTofHitProducer.h:37
BmnTofHitProducer::SetTimeMax
void SetTimeMax(Double_t ma=+15.)
Definition
BmnTofHitProducer.h:102
BmnTofHitProducer::SetAlongStripResolution
void SetAlongStripResolution(Double_t Xerr)
Definition
BmnTofHitProducer.h:94
BmnTofHitProducer::fTOF2
BmnTof2Raw2DigitNew * fTOF2
Definition
BmnTofHitProducer.h:71
BmnTofHitProducer::SetDoINL
void SetDoINL(bool val)
Definition
BmnTofHitProducer.h:97
BmnTofHitProducer::fDoINL
Bool_t fDoINL
Definition
BmnTofHitProducer.h:43
BmnTofHitProducer::SetSelectXYCalibration
void SetSelectXYCalibration(Int_t s=0)
Definition
BmnTofHitProducer.h:100
BmnTofHitProducer::htR
TH1D * htR
Definition
BmnTofHitProducer.h:48
BmnTofHitProducer::BmnTofHitProducer
BmnTofHitProducer(const char *name="TOF HitProducer", const char *geomFile="", Bool_t useMCdata=true, Int_t verbose=1, Bool_t DoTest=false)
Definition
BmnTofHitProducer.cxx:31
BmnTofHitProducer::OnlineWrite
virtual void OnlineWrite(const std::unique_ptr< TTree > &resultTree)
Definition
BmnTofHitProducer.cxx:981
BmnTofHitProducer::h2TestNeighborPair
TH2D * h2TestNeighborPair
Definition
BmnTofHitProducer.h:50
BmnTofHitProducer::fErrX
Double_t fErrX
Definition
BmnTofHitProducer.h:40
BmnTofHitProducer::SetMCTimeFile
void SetMCTimeFile(const char *file)
Definition
BmnTofHitProducer.h:130
BmnTofHitProducer::readMCTimeFile
int readMCTimeFile(const char *)
Definition
BmnTofHitProducer.cxx:911
BmnTofHitProducer::SetDiffTimeMaxBig
void SetDiffTimeMaxBig(Double_t db=0.)
Definition
BmnTofHitProducer.h:104
BmnTofHitProducer::h1TestDistance
TH1D * h1TestDistance
Definition
BmnTofHitProducer.h:48
BmnTofHitProducer::fProtonTimeCorrectionFile
const char * fProtonTimeCorrectionFile
Definition
BmnTofHitProducer.h:62
BmnTofHitProducer::h2TestXYSmearedDouble
TH2D * h2TestXYSmearedDouble
Definition
BmnTofHitProducer.h:50
BmnTofHitProducer::fTimeSigma
Double_t fTimeSigma
Definition
BmnTofHitProducer.h:39
BmnTofHitProducer::h2TestRZ
TH2D * h2TestRZ
Definition
BmnTofHitProducer.h:51
BmnTofHitProducer::fSelectXYCalibration
Int_t fSelectXYCalibration
Definition
BmnTofHitProducer.h:73
BmnTofHitProducer::fgeomFile
const char * fgeomFile
Definition
BmnTofHitProducer.h:58
BmnTofHitProducer::fSignalVelosity
const double fSignalVelosity
Definition
BmnTofHitProducer.h:64
BmnTofHitProducer::SetMainStripSelection
void SetMainStripSelection(Int_t s=0)
Definition
BmnTofHitProducer.h:99
BmnTofHitProducer::GetParameters
TString GetParameters()
Definition
BmnTofHitProducer.h:106
BmnTofHitProducer::h2TestXYSmeared
TH2D * h2TestXYSmeared
Definition
BmnTofHitProducer.h:50
BmnTofHitProducer::SetSeed
void SetSeed(UInt_t seed=0)
Definition
BmnTofHitProducer.cxx:863
BmnTofHitProducer::HitExist
Bool_t HitExist(Double_t val)
Definition
BmnTofHitProducer.cxx:249
BmnTofHitProducer::SetProtonTimeCorrectionFile
void SetProtonTimeCorrectionFile(const char *file)
Definition
BmnTofHitProducer.h:131
BmnTofHitProducer::h1TestMass
TH1D * h1TestMass
Definition
BmnTofHitProducer.h:48
BmnTofHitProducer::fMainStripSelection
Int_t fMainStripSelection
Definition
BmnTofHitProducer.h:72
BmnTofHitProducer::Exec
virtual void Exec(Option_t *opt)
Definition
BmnTofHitProducer.cxx:290
BmnTofHitProducer::GetCrossPoint
bool GetCrossPoint(const TVector3 &p1, double time1, const TVector3 &p2, double time2, TVector3 &crossPoint)
Definition
BmnTofHitProducer.cxx:818
BmnTofHitProducer::MergeHitsOnStripNew
Int_t MergeHitsOnStripNew(void)
Definition
BmnTofHitProducer.cxx:656
BmnTofHitProducer::fMCTimeSigma
Double_t fMCTimeSigma[TOF2_MAX_CHAMBERS]
Definition
BmnTofHitProducer.h:34
BmnTofHitProducer::h1TestMassLong
TH1D * h1TestMassLong
Definition
BmnTofHitProducer.h:48
BmnTofHitProducer::fTimeMin
Double_t fTimeMin
Definition
BmnTofHitProducer.h:74
BmnTofHitProducer::fDoSlewing
Bool_t fDoSlewing
Definition
BmnTofHitProducer.h:44
BmnTofHitProducer::SetTimeMin
void SetTimeMin(Double_t mi=-2.)
Definition
BmnTofHitProducer.h:101
BmnTofHitProducer::fTimeMax
Double_t fTimeMax
Definition
BmnTofHitProducer.h:75
BmnTofHitProducer::DoubleHitExist
Bool_t DoubleHitExist(Double_t val)
Definition
BmnTofHitProducer.cxx:267
BmnTofHitProducer::fDiffTimeMaxBig
Double_t fDiffTimeMaxBig
Definition
BmnTofHitProducer.h:77
BmnTofHitProducer::Init
virtual InitStatus Init()
Definition
BmnTofHitProducer.cxx:113
BmnTofHitProducer::Finish
virtual void Finish()
Definition
BmnTofHitProducer.cxx:642
BmnTofHitProducer::h2TestXYSmearedDouble2
TH2D * h2TestXYSmearedDouble2
Definition
BmnTofHitProducer.h:50
BmnTofHitProducer::~BmnTofHitProducer
virtual ~BmnTofHitProducer()
Definition
BmnTofHitProducer.cxx:107
BmnTofHitProducer::effTestEfficiencySingleHit
TEfficiency * effTestEfficiencySingleHit
Definition
BmnTofHitProducer.h:47
BmnTofHitProducer::effTestEfficiencyDoubleHit
TEfficiency * effTestEfficiencyDoubleHit
Definition
BmnTofHitProducer.h:47
BmnTrigDigit
Definition
BmnTrigDigit.h:7
TEfficiency
TH1D
TH2D
TRandom2
TString
TVector3
reconstruction
tof2
BmnTofHitProducer.h
Generated on
for BmnRoot by
1.17.0