Class Reference for E1039 Core & Analysis Software
GenEmbeddingDataNim4.cc
Go to the documentation of this file.
1 #include <fstream>
2 #include <iomanip>
3 #include <TFile.h>
4 #include <TTree.h>
5 #include <phool/getClass.h>
7 #include <interface_main/SQRun.h>
10 #include "GenEmbeddingDataNim4.h"
11 using namespace std;
12 
13 GenEmbeddingDataNim4::GenEmbeddingDataNim4(const std::string list_name, const std::string name)
14  : SubsysReco(name)
15  , m_list_name(list_name)
16  , m_name_file("embedding_data.root")
17  , m_name_tree("tree")
18 {
19  ;
20 }
21 
23 {
25 }
26 
28 {
29  SQRun* sq_run = findNode::getClass<SQRun>(topNode, "SQRun");
30  if (!sq_run) return Fun4AllReturnCodes::ABORTEVENT;
31  ReadSpillList(sq_run->get_run_id());
32 
33  mi_evt = findNode::getClass<SQEvent >(topNode, "SQEvent");
34  mi_vec_hit = findNode::getClass<SQHitVector >(topNode, "SQHitVector");
35  if (!mi_evt || !mi_vec_hit) {
36  cout << PHWHERE << ": Cannot find SQEvent and/or SQHitVector." << endl;
38  }
39 
40  mo_file = new TFile(m_name_file.c_str(), "RECREATE");
41  mo_tree = new TTree(m_name_tree.c_str(), "Created by GenEmbeddingDataNim4");
42  mo_tree->Branch("SQEvent" , &mi_evt);
43  mo_tree->Branch("SQHitVector", &mi_vec_hit);
44  mo_tree->Branch("qa_data" , &mo_qa_data);
45 
47 }
48 
50 {
51  int spill_id = mi_evt->get_spill_id();
52  if (std::find(m_list_spill_id.begin(), m_list_spill_id.end(), spill_id) == m_list_spill_id.end()) {
54  }
55 
56  mo_qa_data.turn_id = mi_evt->get_qie_turn_id();
57  mo_qa_data.rf_id = mi_evt->get_qie_rf_id();
58  mo_qa_data.rfp01 = mi_evt->get_qie_rf_intensity( 1);
59  mo_qa_data.rfp00 = mi_evt->get_qie_rf_intensity( 0);
60  mo_qa_data.rfm01 = mi_evt->get_qie_rf_intensity(-1);
61  mo_qa_data.D1 = mo_qa_data.D2 = mo_qa_data.D3p = mo_qa_data.D3m = 0;
62  for (SQHitVector::Iter it = mi_vec_hit->begin(); it != mi_vec_hit->end(); it++) {
63  SQHit* hit = *it;
64  int det_id = hit->get_detector_id();
65  if ( 0 < det_id && det_id <= 6) mo_qa_data.D1++;
66  else if (12 < det_id && det_id <= 18) mo_qa_data.D2++;
67  else if (18 < det_id && det_id <= 24) mo_qa_data.D3p++;
68  else if (24 < det_id && det_id <= 30) mo_qa_data.D3m++;
69  }
70  mo_tree->Fill();
71 
73 }
74 
76 {
77  mo_file->cd();
78  mo_file->Write();
79  mo_file->Close();
81 }
82 
84 {
85  m_list_spill_id.clear();
86  ifstream ifs(m_list_name);
87  int run;
88  int spill;
89  while (ifs >> run >> spill) {
90  if (run == run_id) m_list_spill_id.push_back(spill);
91  }
92  ifs.close();
93  int n_sp = m_list_spill_id.size();
94  cout << "GenEmbeddingDataNim4::ReadSpillList(): " << n_sp << " spills." << endl;
95  if (m_list_spill_id.size() == 0) {
96  cout << "!!ERROR!! No good spill from the list. Abort." << endl;
97  exit(1);
98  }
99 }
int Init(PHCompositeNode *topNode)
void ReadSpillList(const int run_id)
int End(PHCompositeNode *topNode)
Called at the end of all processing.
GenEmbeddingDataNim4(const std::string list_name, const std::string name="GenEmbeddingDataNim4")
int InitRun(PHCompositeNode *topNode)
int process_event(PHCompositeNode *topNode)
virtual int get_qie_rf_intensity(const short i) const =0
Return the i-th QIE RF intensity, where i=-16...+16.
virtual int get_qie_turn_id() const =0
Return the QIE turn ID.
virtual int get_qie_rf_id() const =0
Return the QIE RF ID.
virtual int get_spill_id() const =0
Return the spill ID.
virtual ConstIter end() const =0
virtual ConstIter begin() const =0
std::vector< SQHit * >::iterator Iter
Definition: SQHitVector.h:38
An SQ interface class to hold one detector hit.
Definition: SQHit.h:20
virtual short get_detector_id() const
Return the detector ID of this hit.
Definition: SQHit.h:42
An SQ interface class to hold the run-level info.
Definition: SQRun.h:18
virtual int get_run_id() const
Return the run ID.
Definition: SQRun.h:32
#define PHWHERE
Definition: phool.h:23
int D2
Definition: TreeData.h:89
int rf_id
Definition: TreeData.h:84
int rfm01
Definition: TreeData.h:87
int D1
Definition: TreeData.h:88
int rfp01
Definition: TreeData.h:85
int D3m
Definition: TreeData.h:91
int D3p
Definition: TreeData.h:90
int rfp00
Definition: TreeData.h:86
int turn_id
Definition: TreeData.h:83