forked from mdelcourt/dataflow2lcio
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEUTelConvertSim.cpp
More file actions
79 lines (67 loc) · 2.23 KB
/
EUTelConvertSim.cpp
File metadata and controls
79 lines (67 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include "EUTelConvertSim.h"
using namespace std;
namespace CMSPixel
{
simReader::simReader(){
init("treeFile.root","hitTree");
}
simReader::simReader(string filename, string treeName){
init(filename,treeName);
}
void simReader::init(string filename, string treeName){
evtNumber=0;
treeFile = new TFile(filename.c_str());
t = (TTree*) treeFile->Get(treeName.c_str());
if (!t){cerr<<"Unable to open tree"<<endl; exit(0);}
t->SetBranchAddress("TS",&d.TS);
t->SetBranchAddress("roc",&d.roc);
t->SetBranchAddress("row",&d.myrow);
t->SetBranchAddress("col",&d.mycol);
t->SetBranchAddress("vcal",&d.vcal);
t->SetBranchAddress("pulseHeight",&d.pulseHeight);
t->SetBranchAddress("phase",&d.phase);
t->SetBranchAddress("trigger_number",&d.trigger_number);
t->SetBranchAddress("token_number",&d.token_number);
t->SetBranchAddress("triggers_stacked",&d.triggers_stacked);
t->SetBranchAddress("trigger_phase",&d.trigger_phase);
t->SetBranchAddress("data_phase",&d.data_phase);
t->SetBranchAddress("status",&d.status);
treeSize = t->GetEntries();
}
simReader::~simReader(){
treeFile->Close();
}
int simReader::getSimulatedEvent(std::vector<pixel> * p, timing & time){
vector < pair <uint8_t,uint8_t> > unused;
return(getSimulatedEvent(p,&unused,time));
}
int simReader::getSimulatedEvent(std::vector<pixel> * p, std::vector<std::pair<uint8_t,uint8_t> > * readback, timing & time){
pixel hit;
t->GetEntry(evtNumber++);
//get event timestamp
TS = d.TS;
//Write timing info ( one per event )
time.timestamp=TS;
time.trigger_number=d.trigger_number;
time.token_number=d.token_number;
time.triggers_stacked=d.triggers_stacked;
time.trigger_phase=d.trigger_phase;
time.data_phase=d.data_phase;
time.status=d.status;
//Get next events while the timestamp is still the same
do{
//Hits
hit.roc = d.roc;
hit.col = d.mycol;
hit.row = d.myrow;
hit.raw = d.vcal;
hit.vcal= d.pulseHeight;
p->push_back(hit);
if(evtNumber==treeSize){evtNumber=0; return(-1);} //if end of file, return -1
t->GetEntry(evtNumber++);
}while(TS==d.TS);
//if next timestamp, go back one event
evtNumber--;
return(1);// if not end of file, return 1
}
}