StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StjTPCTxt.cxx
1 // $Id: StjTPCTxt.cxx,v 1.1 2008/11/27 07:09:30 tai Exp $
2 // Copyright (C) 2008 Tai Sakuma <sakuma@bnl.gov>
3 #include "StjTPCTxt.h"
4 
5 #include <iostream>
6 #include <string>
7 #include <sstream>
8 
9 #include <TVector3.h>
10 
11 ClassImp(StjTPCTxt)
12 
13 using namespace std;
14 
15 StjTPCTxt::StjTPCTxt(const char* path)
16  : _currentEvent(-1)
17  , _oldLine("")
18 {
19  _dataFile.open(path);
20 }
21 
22 StjTrackList StjTPCTxt::getTrackList()
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  if(0 == line.size()) break;
40 
41  istringstream ist(line);
42  long i;
43  ist >> i;
44 
45  if (_currentEvent != i) {
46  _oldLine = line;
47  break;
48  }
49  currentLines.push_back(line);
50  }
51 
52  StjTrackList ret;
53 
54  for(vector<string>::const_iterator it = currentLines.begin(); it != currentLines.end(); ++it) {
55  istringstream ist(*it);
56  long i;
57 
59 
60  double px, py, pz;
61 
62  ist >> i
63  >> px
64  >> py
65  >> pz
66  >> track.flag
67  >> track.nHits
68  >> track.charge
69  >> track.nHitsPoss
70  >> track.nHitsDedx
71  >> track.nHitsFit
72  >> track.nSigmaPion
73  >> track.Tdca
74  >> track.dcaZ
75  >> track.dcaD
76  >> track.BField
77  >> track.bemcRadius
78  >> track.exitEta
79  >> track.exitPhi
80  >> track.dEdx
81  >> track.trackIndex
82  >> track.id;
83 
84  TVector3 p(px, py, pz);
85  track.pt = p.Pt();
86  track.eta = p.Eta();
87  track.phi = p.Phi();
88 
89  ret.push_back(track);
90  }
91 
92  return ret;
93 }