FairRoot/PandaRoot
PndEmcReader.cxx
Go to the documentation of this file.
1 //
3 // PndEmcReader
4 //
5 // Reader of Emc geometry file (ASCII)
6 //
7 // Created 14/08/06 by S.Spataro
8 //
10 
11 #include <iostream>
12 #include <fstream>
13 #include <string>
14 #include "TString.h"
15 #include <algorithm>
16 
17 #include "PndEmcReader.h"
18 
19 using namespace std;
20 
21 PndEmcReader::PndEmcReader(TString name): g4data(), sName(name)
22 {
23  g4data.clear();
25 }
26 
28 {
29  g4data.clear();
30 }
31 
33 {
34  fstream f;
35  string str;
36  DataG4 data;
37  int line_nr;
38 
39  f.open(sName.Data(), ios::in);
40  cout << "PndEmcReader: EMC geometry file == " << sName.Data() << endl;
41  if(!f) {
42  cout<<"PndEmcReader Error: Data file cannot be open!"<<endl;
43  exit(1);
44  } else {
45  line_nr = 1;
46  while(line_nr<=3) {getline(f,str,'\n'); line_nr++;};
47  while(f) {
48 
49  f>>data.module>>data.row>>data.crystal>>data.theta>>data.phi>>data.tau>>data.posX>>data.posY>>data.posZ>>data.pDz
50  >>data.pTheta>>data.pPhi>>data.pDy1>>data.pDx1>>data.pDx2>>data.pAlp1>>data.pDy2>>data.pDx3>>data.pDx4>>data.pAlp2;
51  PndEmcReader::g4data.push_back(data);
52  };
53  f.close();
54  };
55  f.clear();
56 
57  return;
58 }
59 
61 {
62  int modules = 0;
63 
64  for(unsigned int i=0; i<PndEmcReader::g4data.size(); i++)
65  if(modules<PndEmcReader::g4data[i].module)
66  modules = PndEmcReader::g4data[i].module;
67 
68  return modules;
69 }
70 
71 int PndEmcReader::GetMaxRows(int module)
72 {
73  int rows = 0;
74 
75  for(unsigned int i=0; i<PndEmcReader::g4data.size(); i++)
76  if(module==PndEmcReader::g4data[i].module)
77  if(rows<PndEmcReader::g4data[i].row)
78  rows = PndEmcReader::g4data[i].row;
79 
80  return rows;
81 }
82 
83 int PndEmcReader::GetMaxCrystals(int module, int row)
84 {
85  int crystals = 0;
86 
87  for(unsigned int i=0; i<PndEmcReader::g4data.size(); i++)
88  if((module==PndEmcReader::g4data[i].module)&&(row==PndEmcReader::g4data[i].row))
89  if(crystals<PndEmcReader::g4data[i].crystal)
90  crystals = PndEmcReader::g4data[i].crystal;
91 
92  return crystals;
93 }
94 
96 {
97  int modules = 1000000;
98 
99  for(unsigned int i=0; i<PndEmcReader::g4data.size(); i++)
100  if(modules>PndEmcReader::g4data[i].module)
101  modules = PndEmcReader::g4data[i].module;
102 
103  return modules;
104 }
105 
107 {
108  int rows = 1000000;
109 
110  for(unsigned int i=0; i<PndEmcReader::g4data.size(); i++)
111  if(module==PndEmcReader::g4data[i].module)
112  if(rows>PndEmcReader::g4data[i].row)
113  rows = PndEmcReader::g4data[i].row;
114 
115  return rows;
116 }
117 
118 int PndEmcReader::GetMinCrystals(int module, int row)
119 {
120  int crystals = 1000000;
121 
122  for(unsigned int i=0; i<PndEmcReader::g4data.size(); i++)
123  if((module==PndEmcReader::g4data[i].module)&&(row==PndEmcReader::g4data[i].row))
124  if(crystals>PndEmcReader::g4data[i].crystal)
125  crystals = PndEmcReader::g4data[i].crystal;
126 
127  return crystals;
128 }
129 
130 DataG4 PndEmcReader::GetData(int module, int row, int crystal)
131 {
132  DataG4 data;
133  data.module = -1; // Module not present
134 
135  for(unsigned int i=0; i<PndEmcReader::g4data.size(); i++) {
136  if((module==PndEmcReader::g4data[i].module)&&(row==PndEmcReader::g4data[i].row)&&(crystal==PndEmcReader::g4data[i].crystal)) {
137  data.module = PndEmcReader::g4data[i].module;
138  data.row = PndEmcReader::g4data[i].row;
139  data.crystal = PndEmcReader::g4data[i].crystal;
140  data.theta = PndEmcReader::g4data[i].theta;
141  data.phi = PndEmcReader::g4data[i].phi;
142  data.tau = PndEmcReader::g4data[i].tau;
143  data.posX = PndEmcReader::g4data[i].posX;
144  data.posY = PndEmcReader::g4data[i].posY;
145  data.posZ = PndEmcReader::g4data[i].posZ;
146  data.pDz = PndEmcReader::g4data[i].pDz;
147  data.pTheta = PndEmcReader::g4data[i].pTheta;
148  data.pPhi = PndEmcReader::g4data[i].pPhi;
149  data.pDy1 = PndEmcReader::g4data[i].pDy1;
150  data.pDx1 = PndEmcReader::g4data[i].pDx1;
151  data.pDx2 = PndEmcReader::g4data[i].pDx2;
152  data.pAlp1 = PndEmcReader::g4data[i].pAlp1;
153  data.pDy2 = PndEmcReader::g4data[i].pDy2;
154  data.pDx3 = PndEmcReader::g4data[i].pDx3;
155  data.pDx4 = PndEmcReader::g4data[i].pDx4;
156  data.pAlp2 = PndEmcReader::g4data[i].pAlp2;
157  };
158  };
159 
160  return data;
161 }
int row
Definition: anaLmdDigi.C:67
int GetMinRows(int module)
double pDx3
Definition: PndEmcReader.h:22
double tau
Definition: PndEmcReader.h:20
Int_t i
Definition: run_full.C:25
TString sName
Definition: PndEmcReader.h:36
double pAlp2
Definition: PndEmcReader.h:22
exit(0)
int GetMaxCrystals(int module, int row)
int GetMaxModules()
double pDz
Definition: PndEmcReader.h:22
double pDx2
Definition: PndEmcReader.h:22
double phi
Definition: PndEmcReader.h:20
int module
Definition: PndEmcReader.h:19
int row
Definition: PndEmcReader.h:19
DataG4 GetData(int module, int row, int crystal)
void fill_vector()
int GetMinCrystals(int module, int row)
double pPhi
Definition: PndEmcReader.h:22
int GetMaxRows(int module)
int crystal
Definition: PndEmcReader.h:19
TFile * f
Definition: bump_analys.C:12
double pDx4
Definition: PndEmcReader.h:22
TString name
double pDx1
Definition: PndEmcReader.h:22
int GetMinModules()
PndEmcReader(TString name)
double posX
Definition: PndEmcReader.h:21
double posZ
Definition: PndEmcReader.h:21
double pDy2
Definition: PndEmcReader.h:22
double pTheta
Definition: PndEmcReader.h:22
double pDy1
Definition: PndEmcReader.h:22
std::vector< DataG4 > g4data
Definition: PndEmcReader.h:34
double posY
Definition: PndEmcReader.h:21
double theta
Definition: PndEmcReader.h:20
double pAlp1
Definition: PndEmcReader.h:22