Fork me on GitHub

source: git/external/TrackCovariance/SolGeom.cc @ 1294bba

ImprovedOutputFile
Last change on this file since 1294bba was 1294bba, checked in by Pavel Demin <pavel.demin@…>, 7 months ago

fix formatting in TrackCovariance/SolGeom?.cc

  • Property mode set to 100644
File size: 2.7 KB
Line 
1#include <iostream>
2#include <sstream>
3
4#include <TString.h>
5
6#include "SolGeom.h"
7#include "SolTrack.h"
8
9using namespace std;
10
11SolGeom::SolGeom()
12{
13  //
14  // Magnetic field
15  //
16  fB = 2.0;
17  //
18  // Create arrays
19  //
20  ftyLay = new Int_t[fNlMax];     // Layer type 1 = R (barrel) or 2 = z (forward/backward)
21  fLyLabl = new TString[fNlMax];  // Layer label
22  fxMin = new Double_t[fNlMax];   // Minimum dimension z for barrel  or R for forward
23  fxMax = new Double_t[fNlMax];   // Maximum dimension z for barrel  or R for forward
24  frPos = new Double_t[fNlMax];   // R/z location of layer
25  fthLay = new Double_t[fNlMax];  // Thickness (meters)
26  frlLay = new Double_t[fNlMax];  // Radiation length (meters)
27  fnmLay = new Int_t[fNlMax];     // Number of measurements in layers (1D or 2D)
28  fstLayU = new Double_t[fNlMax]; // Stereo angle (rad) - 0(pi/2) = axial(z) layer - Upper side
29  fstLayL = new Double_t[fNlMax]; // Stereo angle (rad) - 0(pi/2) = axial(z) layer - Lower side
30  fsgLayU = new Double_t[fNlMax]; // Resolution Upper side (meters) - 0 = no measurement
31  fsgLayL = new Double_t[fNlMax]; // Resolution Lower side (meters) - 0 = no measurement
32  fflLay = new Bool_t[fNlMax];    // measurement flag = T, scattering only = F
33  //
34  // Load geometry info in SolGeom.h
35  //
36  fNlay = 0; // Actual number of layers
37  fBlay = 0; // Nr. of barrel layers
38  fFlay = 0; // Nr. of forward/backward layers
39  fNm = 0;   // Nr. of measuring layers
40}
41
42void SolGeom::Read(const char *data)
43{
44  Int_t tyLay;
45  string LyLabl;
46  Double_t xMin;
47  Double_t xMax;
48  Double_t rPos;
49  Double_t thLay;
50  Double_t rlLay;
51  Int_t nmLay;
52  Double_t stLayU;
53  Double_t stLayL;
54  Double_t sgLayU;
55  Double_t sgLayL;
56  Int_t flLay;
57
58  stringstream data_stream(data);
59  string line;
60
61  fNlay = 0;
62  while(getline(data_stream, line))
63  {
64    stringstream line_stream(line);
65
66    line_stream >> tyLay >> LyLabl >> xMin >> xMax >> rPos >> thLay >> rlLay >> nmLay >> stLayU >> stLayL >> sgLayU >> sgLayL >> flLay;
67
68    if(line_stream.fail()) continue;
69
70    ftyLay[fNlay] = tyLay;
71    fLyLabl[fNlay] = LyLabl;
72    fxMin[fNlay] = xMin;
73    fxMax[fNlay] = xMax;
74    frPos[fNlay] = rPos;
75    fthLay[fNlay] = thLay;
76    frlLay[fNlay] = rlLay;
77    fnmLay[fNlay] = nmLay;
78    fstLayU[fNlay] = stLayU;
79    fstLayL[fNlay] = stLayL;
80    fsgLayU[fNlay] = sgLayU;
81    fsgLayL[fNlay] = sgLayL;
82    fflLay[fNlay] = flLay;
83
84    fNlay++;
85    if (tyLay == 1) fBlay++;
86    if (tyLay == 2) fFlay++;
87    if (flLay == 1) fNm++;
88  }
89}
90
91SolGeom::~SolGeom()
92{
93  delete[] ftyLay;
94  delete[] fxMin;
95  delete[] fxMax;
96  delete[] frPos;
97  delete[] fthLay;
98  delete[] frlLay;
99  delete[] fnmLay;
100  delete[] fstLayU;
101  delete[] fstLayL;
102  delete[] fsgLayU;
103  delete[] fsgLayL;
104  delete[] fflLay;
105}
Note: See TracBrowser for help on using the repository browser.