BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
CbmStsDigiPar.cxx
Go to the documentation of this file.
1
// -------------------------------------------------------------------------
2
// ----- CbmStsDigiPar source file -----
3
// ----- Created 28/06/05 by V. Friese -----
4
// -------------------------------------------------------------------------
5
6
#include "
CbmStsDigiPar.h
"
7
8
#include "
CbmStsStationDigiPar.h
"
9
#include "FairDetParIo.h"
10
#include "FairParIo.h"
11
#include "
TMath.h
"
12
#include "
TString.h
"
13
14
#include <iostream>
15
16
// ----- Standard constructor ------------------------------------------
17
CbmStsDigiPar::CbmStsDigiPar
(
const
char
* name,
const
char
* title,
const
char
* context)
18
:
FairParSet
(name, title, context)
19
,
fStations
(NULL)
20
,
fStationMap
()
21
{
22
fStations
=
new
TObjArray
();
23
detName =
"STS"
;
24
}
25
26
// ----- Destructor ----------------------------------------------------
27
CbmStsDigiPar::~CbmStsDigiPar
()
28
{
29
clear
();
30
}
31
// -------------------------------------------------------------------------
32
33
// ----- Public method init --------------------------------------------
34
Bool_t
CbmStsDigiPar::init
(FairParIo* parIo)
35
{
36
if
(!parIo) {
37
cout <<
"-W- CbmStsDigiPar::init "
38
<<
"No input given; could not initialise parameters."
<< endl;
39
return
kFALSE
;
40
}
41
FairDetParIo* input = parIo->getDetParIo(
"CbmStsParIo"
);
42
if
(input)
43
return
(input->init(
this
));
44
return
kFALSE
;
45
}
46
// -------------------------------------------------------------------------
47
48
// ----- Public method write -------------------------------------------
49
Int_t
CbmStsDigiPar::write
(FairParIo* parIo)
50
{
51
if
(!parIo) {
52
cout <<
"-W- CbmStsDigiPar::write "
53
<<
"No output given; could not write parameters."
<< endl;
54
return
kFALSE
;
55
;
56
}
57
FairDetParIo* output = parIo->getDetParIo(
"CbmStsParIo"
);
58
if
(output)
59
return
(output->write(
this
));
60
return
kFALSE
;
61
}
62
// -------------------------------------------------------------------------
63
64
// ----- Public method clear -------------------------------------------
65
void
CbmStsDigiPar::clear
()
66
{
67
status =
kFALSE
;
68
resetInputVersions();
69
fStations
->Delete();
70
fStationMap
.clear();
71
}
72
// -------------------------------------------------------------------------
73
74
// ----- Public method readline ----------------------------------------
75
void
CbmStsDigiPar::readline
(
const
char
* buffer,
Int_t
* set, fstream* f)
76
{
77
78
// First line: Station ID and type
79
Int_t
stationNr = -1;
80
Float_t
frotation = 0.;
81
Int_t
nSectors = 0;
82
Int_t
nSensors = 0;
83
sscanf(buffer,
"%d%f%d"
, &stationNr, &frotation, &nSectors);
84
if
(stationNr == -1)
85
return
;
86
Double_t
rotation =
Double_t
(frotation);
87
88
// Create new station
89
CbmStsStationDigiPar
* station =
new
CbmStsStationDigiPar
(stationNr, rotation);
90
91
// Read the sector lines
92
Int_t
sectorNr = -1;
93
Int_t
sensorNr = -1;
94
Int_t
iType = 0;
95
Double_t
x0 = 0.;
96
Double_t
y0 = 0.;
97
Double_t
z0 = 0.;
98
Double_t
angle = 0.;
99
Double_t
lx = 0.;
100
Double_t
ly = 0.;
101
Double_t
lz = 0.;
102
Double_t
dx = 0.;
103
Double_t
dy = 0.;
104
Double_t
stereoF = 0.;
105
Double_t
stereoB = 0.;
106
for
(
Int_t
iSector = 0; iSector < nSectors; iSector++) {
107
*f >> sectorNr >> nSensors;
108
109
CbmStsSectorDigiPar
* sector =
new
CbmStsSectorDigiPar
(sectorNr);
110
111
for
(
Int_t
iSensor = 0; iSensor < nSensors; iSensor++) {
112
113
*f >> sensorNr >> iType >> x0 >> y0 >> z0 >> angle >> lx >> ly >> lz >> dx >> dy >> stereoF >> stereoB;
114
115
angle = angle *
TMath::Pi
() / 180.;
116
stereoB = stereoB *
TMath::Pi
() / 180.;
117
stereoF = stereoF *
TMath::Pi
() / 180.;
118
119
CbmStsSensorDigiPar
* sensor =
120
new
CbmStsSensorDigiPar
(sensorNr, iType, x0, y0, z0, angle, lx, ly, lz, dx, dy, stereoF, stereoB);
121
sector->
AddSensor
(sensor);
122
}
123
station->
AddSector
(sector);
124
}
// Loop over sector lines
125
fStations
->Add(station);
126
}
127
// -------------------------------------------------------------------------
128
/*void CbmStsDigiPar::readline(const char* buffer, Int_t* set, fstream* f) {
129
130
// First line: Station ID and type
131
Int_t stationNr = -1;
132
Float_t frotation = 0.;
133
Int_t nSectors = 0;
134
sscanf(buffer, "%d%f%d", &stationNr, &frotation, &nSectors);
135
if ( stationNr == -1 ) return;
136
Double_t rotation = Double_t(frotation);
137
138
// Create new station
139
CbmStsStationDigiPar* station = new CbmStsStationDigiPar(stationNr,
140
rotation);
141
142
// Read the sector lines
143
Int_t sectorNr = -1;
144
Int_t iType = 0;
145
Double_t x0 = 0.;
146
Double_t y0 = 0.;
147
Double_t angle = 0.;
148
Double_t lx = 0.;
149
Double_t ly = 0.;
150
Double_t dx = 0.;
151
Double_t dy = 0.;
152
Double_t stereo = 0.;
153
for (Int_t iSector=0; iSector<nSectors; iSector++) {
154
*f >> sectorNr >> iType >> x0 >> y0 >> angle >> lx >> ly
155
>> dx >> dy >> stereo;
156
angle = angle * TMath::Pi() / 180.;
157
stereo = stereo * TMath::Pi() / 180.;
158
CbmStsSectorDigiPar* sector = new CbmStsSectorDigiPar(sectorNr, iType,
159
x0, y0, angle,
160
lx, ly, dx, dy,
161
stereo);
162
station->AddSector(sector);
163
} // Loop over sector lines
164
fStations->Add(station);
165
166
}
167
*/
// -------------------------------------------------------------------------
168
169
// ----- Public method putAsciiHeader ----------------------------------
170
void
CbmStsDigiPar::putAsciiHeader
(
TString
& header)
171
{
172
header =
"Header is not yet defined"
;
173
}
174
// -------------------------------------------------------------------------
175
176
// ----- Public method GetStation --------------------------------------
177
CbmStsStationDigiPar
*
CbmStsDigiPar::GetStation
(
Int_t
iStation)
178
{
179
return
(
CbmStsStationDigiPar
*)
fStations
->At(iStation);
180
}
181
// -------------------------------------------------------------------------
182
183
// ------- Public method GetStationById --------------------------------
184
CbmStsStationDigiPar
*
CbmStsDigiPar::GetStationByNr
(
Int_t
stationNr)
185
{
186
Int_t
index =
fStationMap
[stationNr];
187
CbmStsStationDigiPar
* station = (
CbmStsStationDigiPar
*)
fStations
->At(index);
188
if
(!station) {
189
cout <<
"-W- CbmStsDigiPar::GetStationDigiPar: "
190
<<
"No parameters found for station "
<< stationNr << endl;
191
return
NULL;
192
}
193
return
station;
194
}
195
// -------------------------------------------------------------------------
Bool_t
bool Bool_t
Int_t
int Int_t
Float_t
float Float_t
kFALSE
constexpr Bool_t kFALSE
Double_t
double Double_t
TMath.h
TString.h
CbmStsDigiPar::GetStation
CbmStsStationDigiPar * GetStation(Int_t iStation)
Accessor to station parameters (by index).
Definition
CbmStsDigiPar.cxx:177
CbmStsDigiPar::fStations
TObjArray * fStations
Definition
CbmStsDigiPar.h:69
CbmStsDigiPar::~CbmStsDigiPar
virtual ~CbmStsDigiPar()
Destructor.
Definition
CbmStsDigiPar.cxx:27
CbmStsDigiPar::putAsciiHeader
void putAsciiHeader(TString &)
Put an Ascii header for Ascii file output.
Definition
CbmStsDigiPar.cxx:170
CbmStsDigiPar::fStationMap
map< Int_t, Int_t > fStationMap
Definition
CbmStsDigiPar.h:71
CbmStsDigiPar::GetStationByNr
CbmStsStationDigiPar * GetStationByNr(Int_t stationId)
Accessor to station parameters (by station ID).
Definition
CbmStsDigiPar.cxx:184
CbmStsDigiPar::readline
void readline(const char *buffer, Int_t *set, fstream *f)
Read one line (station) from ASCII input.
Definition
CbmStsDigiPar.cxx:75
CbmStsDigiPar::init
virtual Bool_t init(FairParIo *input)
Initialisation from input device.
Definition
CbmStsDigiPar.cxx:34
CbmStsDigiPar::CbmStsDigiPar
CbmStsDigiPar(const char *name="StsDigiPar", const char *title="STS digitisation parameters", const char *context="Default")
Standard constructor.
Definition
CbmStsDigiPar.cxx:17
CbmStsDigiPar::clear
virtual void clear()
Reset all parameters.
Definition
CbmStsDigiPar.cxx:65
CbmStsDigiPar::write
virtual Int_t write(FairParIo *output)
Output to file.
Definition
CbmStsDigiPar.cxx:49
CbmStsSectorDigiPar
CbmStsSectorDigiPar.h.
Definition
CbmStsSectorDigiPar.h:29
CbmStsSectorDigiPar::AddSensor
void AddSensor(CbmStsSensorDigiPar *sen)
Add parameters of one sensor.
Definition
CbmStsSectorDigiPar.h:52
CbmStsSensorDigiPar
CbmStsSensorDigiPar.h.
Definition
CbmStsSensorDigiPar.h:28
CbmStsStationDigiPar
CbmStsStationDigiPar.h.
Definition
CbmStsStationDigiPar.h:20
CbmStsStationDigiPar::AddSector
void AddSector(CbmStsSectorDigiPar *sec)
Add parameters of one sector.
Definition
CbmStsStationDigiPar.h:43
FairParSet
TObjArray
TString
CbmStsDigiPar.h
CbmStsStationDigiPar.h
TMath::Pi
constexpr Double_t Pi()
detectors
sts
CbmStsDigiPar.cxx
Generated on
for BmnRoot by
1.17.0