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