28 string locOutputFileName =
"hd_root.root";
29 if(gPARMS->Exists(
"OUTPUT_FILENAME"))
30 gPARMS->GetParameter(
"OUTPUT_FILENAME", locOutputFileName);
33 TFile* locFile = (TFile*)gROOT->FindObject(locOutputFileName.c_str());
39 fTree =
new TTree(
"dirc",
"dirc tree");
40 fcEvent =
new TClonesArray(
"DrcEvent");
52 vector<double>tof_face;
53 geom->
Get(
"//section/composition/posXYZ[@volume='ForwardTOF']/@X_Y_Z", tof_face);
54 vector<double>tof_plane;
55 geom->
Get(
"//composition[@name='ForwardTOF']/posXYZ[@volume='forwardTOF']/@X_Y_Z/plane[@value='0']", tof_plane);
56 double dTOFz=tof_face[2]+tof_plane[2];
57 geom->
Get(
"//composition[@name='ForwardTOF']/posXYZ[@volume='forwardTOF']/@X_Y_Z/plane[@value='1']", tof_plane);
58 dTOFz+=tof_face[2]+tof_plane[2];
62 vector<double>dirc_face;
63 vector<double>dirc_plane;
64 vector<double>dirc_shift;
65 vector<double>bar_plane;
66 geom->
Get(
"//section/composition/posXYZ[@volume='DIRC']/@X_Y_Z", dirc_face);
67 geom->
Get(
"//composition[@name='DRCC']/posXYZ[@volume='DCML10']/@X_Y_Z/plane[@value='1']", dirc_plane);
68 geom->
Get(
"//composition[@name='DIRC']/posXYZ[@volume='DRCC']/@X_Y_Z", dirc_shift);
70 dDIRCz=dirc_face[2]+dirc_plane[2]+dirc_shift[2] + 0.8625;
71 std::cout<<
"dDIRCz "<<dDIRCz<<std::endl;
80 vector<const DMCThrown*> mcthrowns;
81 vector<const DMCTrackHit*> mctrackhits;
82 vector<const DDIRCTruthBarHit*> dircBarHits;
83 vector<const DDIRCTruthPmtHit*> dircPmtHits;
84 vector<const DDIRCTDCDigiHit*> dataDigiHits;
85 vector<const DDIRCPmtHit*> dataPmtHits;
86 vector<const DL1Trigger*>
trig;
89 loop->Get(mctrackhits);
90 loop->Get(dircPmtHits);
91 loop->Get(dircBarHits);
92 loop->Get(dataDigiHits);
93 loop->Get(dataPmtHits);
97 japp->RootWriteLock();
101 if (trig.size() > 0) {
103 if (trig[0]->fp_trig_mask & 0x4000) trigger = 1;
105 if (trig[0]->trig_mask & 0x1) trigger = 2;
110 double locLEDRefTime = 0;
114 vector<const DDIRCLEDRef*> dircLEDRefs;
115 loop->Get(dircLEDRefs);
116 for(uint i=0; i<dircLEDRefs.size(); i++) {
120 locLEDRefTime = dircLEDRef->
t_TDC;
128 for (
unsigned int m = 0; m < mcthrowns.size(); m++){
129 if(dircPmtHits.size() > 0.){
135 for (
unsigned int h = 0;
h < dircPmtHits.size();
h++){
138 for (
unsigned int j = 0; j < dircBarHits.size(); j++){
140 if(mcthrowns[m]->myid == dircBarHits[j]->
track){
145 double px = dircBarHits[j]->px;
146 double py = dircBarHits[j]->py;
147 double pz = dircBarHits[j]->pz;
159 if(relevant<1)
continue;
160 int ch=dircPmtHits[
h]->ch;
167 hit.
SetPosition(TVector3(dircPmtHits[
h]->
x,dircPmtHits[
h]->
y,dircPmtHits[
h]->z));
180 if(dataPmtHits.size()>0){
186 for (
const auto dhit : dataPmtHits) {
216 if(cevt.GetEntriesFast()>0)
fTree->Fill();
void SetTime(Double_t val)
void SetPixelId(Int_t val)
void SetEnergy(Double_t val)
bool Get(string xpath, string &sval) const
void SetLeadTime(Double_t val)
jerror_t evnt(JEventLoop *loop, uint64_t eventnumber)
DEventProcessor_pid_dirc()
void SetNreflections(Int_t val)
void SetParent(Int_t val)
jerror_t brun(jana::JEventLoop *loop, int32_t runnumber)
DGeometry * GetDGeometry(unsigned int run_number)
void SetMomentum(TVector3 val)
void SetChannel(Int_t val)
void SetPosition(TVector3 val)
void SetPathId(Long64_t val)
void SetPosition(TVector3 val)
~DEventProcessor_pid_dirc()
void SetTotTime(Double_t val)