CMS 3D CMS Logo

FullMatchMemory.cc
Go to the documentation of this file.
6 #include <iomanip>
7 #include <filesystem>
8 
9 using namespace std;
10 using namespace trklet;
11 
12 FullMatchMemory::FullMatchMemory(string name, Settings const& settings, unsigned int iSector)
13  : MemoryBase(name, settings, iSector) {
14  size_t pos = find_nth(name, 0, "_", 1);
15  assert(pos != string::npos);
17 }
18 
19 void FullMatchMemory::addMatch(Tracklet* tracklet, const Stub* stub) {
20  if (!settings_.doKF() || !settings_.doMultipleMatches()) { //When using KF we allow multiple matches
21  for (auto& match : matches_) {
22  if (match.first == tracklet) { //Better match, replace
23  match.second = stub;
24  return;
25  }
26  }
27  }
28  std::pair<Tracklet*, const Stub*> tmp(tracklet, stub);
29  //Check that we have the right TCID order
30  if (!matches_.empty()) {
31  if ((!settings_.doKF() && matches_[matches_.size() - 1].first->TCID() >= tracklet->TCID()) ||
32  (settings_.doKF() && matches_[matches_.size() - 1].first->TCID() > tracklet->TCID())) {
33  edm::LogPrint("Tracklet") << "Wrong TCID ordering in " << getName() << " : "
34  << matches_[matches_.size() - 1].first->TCID() << " " << tracklet->TCID() << " "
35  << matches_[matches_.size() - 1].first->trackletIndex() << " "
36  << tracklet->trackletIndex();
37  }
38  }
39  matches_.push_back(tmp);
40 }
41 
43  const string dirM = settings_.memPath() + "Matches/";
44 
45  std::ostringstream oss;
46  oss << dirM << "FullMatches_" << getName() << "_" << std::setfill('0') << std::setw(2) << (iSector_ + 1) << ".dat";
47  auto const& fname = oss.str();
48 
49  if (first) {
50  bx_ = 0;
51  event_ = 1;
52 
53  if (not std::filesystem::exists(dirM)) {
54  int fail = system((string("mkdir -p ") + dirM).c_str());
55  if (fail)
56  throw cms::Exception("BadDir") << __FILE__ << " " << __LINE__ << " could not create directory " << dirM;
57  }
58  out_.open(fname);
59  if (out_.fail())
60  throw cms::Exception("BadFile") << __FILE__ << " " << __LINE__ << " could not create file " << fname;
61 
62  } else
63  out_.open(fname, std::ofstream::app);
64 
65  out_ << "BX = " << (bitset<3>)bx_ << " Event : " << event_ << endl;
66 
67  for (unsigned int j = 0; j < matches_.size(); j++) {
68  string match = (layer_ > 0) ? matches_[j].first->fullmatchstr(layer_) : matches_[j].first->fullmatchdiskstr(disk_);
69  out_ << "0x";
70  out_ << std::setfill('0') << std::setw(2);
71  out_ << hex << j << dec;
72  out_ << " " << match << " " << trklet::hexFormat(match) << endl;
73  }
74  out_.close();
75 
76  bx_++;
77  event_++;
78  if (bx_ > 7)
79  bx_ = 0;
80 }
trklet::MemoryBase::settings_
Settings const & settings_
Definition: MemoryBase.h:50
L1TStub.h
trklet::FullMatchMemory::disk_
int disk_
Definition: FullMatchMemory.h:42
MessageLogger.h
trklet::Settings::doKF
bool doKF() const
Definition: Settings.h:217
trklet::FullMatchMemory::writeMC
void writeMC(bool first)
Definition: FullMatchMemory.cc:42
trklet::MemoryBase::find_nth
static size_t find_nth(const std::string &haystack, size_t pos, const std::string &needle, size_t nth)
Definition: MemoryBase.cc:118
pos
Definition: PixelAliasList.h:18
edm::LogPrint
Log< level::Warning, true > LogPrint
Definition: MessageLogger.h:130
trklet::Settings
Definition: Settings.h:31
trklet::Settings::memPath
std::string const & memPath() const
Definition: Settings.h:169
cms::cuda::assert
assert(be >=bs)
trklet::MemoryBase::event_
int event_
Definition: MemoryBase.h:48
trklet::FullMatchMemory::addMatch
void addMatch(Tracklet *tracklet, const Stub *stub)
Definition: FullMatchMemory.cc:19
trklet::MemoryBase::out_
std::ofstream out_
Definition: MemoryBase.h:46
trklet::MemoryBase::initLayerDisk
void initLayerDisk(unsigned int pos, int &layer, int &disk)
Definition: MemoryBase.cc:18
FullMatchMemory.h
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
trklet::MemoryBase::bx_
int bx_
Definition: MemoryBase.h:47
trklet::Tracklet
Definition: Tracklet.h:28
trklet::Tracklet::trackletIndex
int trackletIndex() const
Definition: Tracklet.h:494
trklet::FullMatchMemory::layer_
int layer_
Definition: FullMatchMemory.h:41
trklet::MemoryBase::getName
std::string const & getName() const
Definition: MemoryBase.h:19
trklet::Stub
Definition: Stub.h:16
trklet::Settings::doMultipleMatches
bool doMultipleMatches() const
Definition: Settings.h:218
first
auto first
Definition: CAHitNtupletGeneratorKernelsImpl.h:112
trklet::MemoryBase
Definition: MemoryBase.h:13
trklet::Tracklet::TCID
int TCID() const
Definition: Tracklet.h:500
match
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
trklet
Definition: AllProjectionsMemory.h:9
alignmentValidation.fname
string fname
main script
Definition: alignmentValidation.py:959
std
Definition: JetResolutionObject.h:76
Exception
Definition: hltDiff.cc:245
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
trklet::hexFormat
std::string hexFormat(const std::string &binary)
Definition: Util.h:15
cms::Exception
Definition: Exception.h:70
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
trklet::FullMatchMemory::matches_
std::vector< std::pair< Tracklet *, const Stub * > > matches_
Definition: FullMatchMemory.h:39
Stub.h
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
Tracklet.h
trklet::MemoryBase::iSector_
unsigned int iSector_
Definition: MemoryBase.h:44