StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StjBEMCTxt.cxx
1 // $Id: StjBEMCTxt.cxx,v 1.1 2008/11/27 07:35:22 tai Exp $
2 // Copyright (C) 2008 Tai Sakuma <sakuma@bnl.gov>
3 #include "StjBEMCTxt.h"
4 
5 #include <iostream>
6 #include <string>
7 #include <sstream>
8 
9 #include <TVector3.h>
10 
11 using namespace std;
12 
13 ClassImp(StjBEMCTxt)
14 
15 StjBEMCTxt::StjBEMCTxt(const char* path)
16  : _currentEvent(-1)
17  , _oldLine("")
18 {
19  _dataFile.open(path);
20 }
21 
22 StjTowerEnergyList StjBEMCTxt::getEnergyList()
23 {
24  ++_currentEvent;
25 
26  string line;
27 
28  vector<string> currentLines;
29 
30  while(!_dataFile.eof()) {
31 
32  if(_oldLine.size()) {
33  line = _oldLine;
34  _oldLine = "";
35  } else {
36  getline(_dataFile, line);
37  }
38 
39  istringstream ist(line);
40  long i;
41  ist >> i;
42 
43  if (_currentEvent != i) {
44  _oldLine = line;
45  break;
46  }
47 
48  currentLines.push_back(line);
49  }
50 
51  StjTowerEnergyList ret;
52 
53  for(vector<string>::const_iterator it = currentLines.begin(); it != currentLines.end(); ++it) {
54  istringstream ist(*it);
55  long i;
56 
57  StjTowerEnergy dep;
58 
59  dep.detectorId = 9;
60 
61  double x, y, z;
62 
63  ist >> i
64  >> dep.towerId
65  >> x
66  >> y
67  >> z
68  >> dep.vertexX
69  >> dep.vertexY
70  >> dep.vertexZ
71  >> dep.energy
72  >> dep.adc
73  >> dep.pedestal
74  >> dep.rms
75  >> dep.status;
76 
77  TVector3 tower(x, y, z);
78  dep.towerR = tower.Perp();
79  dep.towerEta = tower.Eta();
80  dep.towerPhi = tower.Phi();
81 
82  ret.push_back(dep);
83  }
84 
85  return ret;
86 }