File indexing completed on 2023-03-17 10:39:14
0001 #include <Alignment/HIPAlignmentAlgorithm/interface/HIPMonitorConfig.h>
0002
0003 HIPMonitorConfig::HIPMonitorConfig(const edm::ParameterSet& cfg)
0004 : cfgMonitor(cfg.getParameter<edm::ParameterSet>("monitorConfig")),
0005 outfilecore(cfgMonitor.getParameter<std::string>("outfile")),
0006 maxEventsPerJob(cfgMonitor.getParameter<int>("maxEventsPerJob")),
0007 fillTrackMonitoring(cfgMonitor.getParameter<bool>("fillTrackMonitoring")),
0008 maxTracks(cfgMonitor.getParameter<int>("maxTracks")),
0009 trackmonitorvars(maxEventsPerJob, maxTracks),
0010 fillTrackHitMonitoring(cfgMonitor.getParameter<bool>("fillTrackHitMonitoring")),
0011 maxHits(cfgMonitor.getParameter<int>("maxHits")),
0012 hitmonitorvars(maxHits),
0013 eventCounter(0),
0014 hitCounter(0) {
0015 outfile = cfg.getParameter<std::string>("outpath") + outfilecore;
0016 }
0017
0018 HIPMonitorConfig::HIPMonitorConfig(const HIPMonitorConfig& other)
0019 : cfgMonitor(other.cfgMonitor),
0020 outfilecore(other.outfilecore),
0021 maxEventsPerJob(other.maxEventsPerJob),
0022 fillTrackMonitoring(other.fillTrackMonitoring),
0023 maxTracks(other.maxTracks),
0024 fillTrackHitMonitoring(other.fillTrackHitMonitoring),
0025 maxHits(other.maxHits),
0026 outfile(other.outfile),
0027 eventCounter(other.eventCounter),
0028 hitCounter(other.hitCounter) {}
0029
0030 bool HIPMonitorConfig::checkNevents() {
0031 bool res = (maxEventsPerJob < 0 || maxEventsPerJob > eventCounter);
0032 eventCounter++;
0033 return res;
0034 }
0035 bool HIPMonitorConfig::checkNhits() {
0036 bool res = (maxHits < 0 || maxHits > hitCounter);
0037 hitCounter++;
0038 return res;
0039 }
0040
0041 void HIPTrackMonitorVariables::bookBranches() {
0042 if (tree != nullptr) {
0043 tree->Branch("Ntracks", &m_Ntracks);
0044 tree->Branch("Nhits", &m_Nhits);
0045
0046 tree->Branch("nhPXB", &m_nhPXB);
0047 tree->Branch("nhPXF", &m_nhPXF);
0048 tree->Branch("nhTIB", &m_nhTIB);
0049 tree->Branch("nhTOB", &m_nhTOB);
0050 tree->Branch("nhTID", &m_nhTID);
0051 tree->Branch("nhTEC", &m_nhTEC);
0052 tree->Branch("Pt", &m_Pt);
0053 tree->Branch("P", &m_P);
0054 tree->Branch("Eta", &m_Eta);
0055 tree->Branch("Phi", &m_Phi);
0056 tree->Branch("Chi2n", &m_Chi2n);
0057 tree->Branch("d0", &m_d0);
0058 tree->Branch("dz", &m_dz);
0059 tree->Branch("wt", &m_wt);
0060 }
0061 }
0062 void HIPHitMonitorVariables::bookBranches() {
0063 if (tree != nullptr) {
0064 tree->Branch("Id", &m_detId, "Id/i");
0065 tree->Branch("sinTheta", &m_sinTheta);
0066 tree->Branch("impactAngle", &m_angle);
0067 tree->Branch("wt", &m_hitwt);
0068 tree->Branch("probPresent", &m_hasHitProb);
0069 tree->Branch("probXY", &m_probXY);
0070 tree->Branch("probQ", &m_probQ);
0071 tree->Branch("qualityWord", &m_rawQualityWord);
0072 }
0073 }
0074 void HIPTrackMonitorVariables::fill() {
0075 if (tree == nullptr)
0076 return;
0077 if (maxNEvents >= 0 && nEvents >= maxNEvents)
0078 return;
0079
0080 bool doFill = false;
0081 m_Ntracks = m_Pt.size();
0082 if (m_Ntracks == 0)
0083 return;
0084
0085 if (maxTracksRcd < 0)
0086 doFill = true;
0087 else if (nTracks < maxTracksRcd) {
0088 if ((nTracks + m_Ntracks) < maxTracksRcd)
0089 doFill = true;
0090 else {
0091 int NewSize = maxTracksRcd - nTracks;
0092 if ((int)m_Pt.size() < NewSize)
0093 NewSize = m_Pt.size();
0094
0095
0096 resizeVectors(NewSize);
0097
0098 doFill = true;
0099 }
0100 } else {
0101
0102 int tmpNtracks = m_Ntracks;
0103 resetPerEvent();
0104 m_Ntracks = tmpNtracks;
0105
0106 doFill = true;
0107 }
0108
0109 if (doFill) {
0110 tree->Fill();
0111 nEvents++;
0112 nTracks += m_Ntracks;
0113 }
0114
0115 resetPerEvent();
0116 }
0117 void HIPHitMonitorVariables::fill() {
0118 if (tree == nullptr)
0119 return;
0120
0121 bool doFill = (maxHitsRcd < 0 || nHits < maxHitsRcd);
0122
0123 if (doFill) {
0124 tree->Fill();
0125 nHits++;
0126 }
0127
0128 resetPerHit();
0129 }