CMS 3D CMS Logo

CandidateMatchMemory.cc
Go to the documentation of this file.
7 
8 #include <iomanip>
9 #include <filesystem>
10 
11 using namespace std;
12 using namespace trklet;
13 
14 CandidateMatchMemory::CandidateMatchMemory(string name, Settings const& settings, unsigned int iSector)
15  : MemoryBase(name, settings, iSector) {}
16 
17 void CandidateMatchMemory::addMatch(std::pair<Tracklet*, int> tracklet, const Stub* stub) {
18  std::pair<std::pair<Tracklet*, int>, const Stub*> tmp(tracklet, stub);
19 
20  //Check for consistency
21  for (auto& match : matches_) {
22  if (tracklet.first->TCID() < match.first.first->TCID()) {
23  throw cms::Exception("LogicError") << __FILE__ << " " << __LINE__ << " In " << getName() << " adding tracklet "
24  << tracklet.first << " with lower TCID : " << tracklet.first->TCID()
25  << " than earlier TCID " << match.first.first->TCID();
26  }
27  }
28  matches_.push_back(tmp);
29 }
30 
32  const string dirM = settings_.memPath() + "Matches/";
33 
34  std::ostringstream oss;
35  oss << dirM << "CandidateMatches_" << getName() << "_" << std::setfill('0') << std::setw(2) << (iSector_ + 1)
36  << ".dat";
37  auto const& fname = oss.str();
38 
39  if (first) {
40  bx_ = 0;
41  event_ = 1;
42 
43  if (not std::filesystem::exists(dirM)) {
44  int fail = system((string("mkdir -p ") + dirM).c_str());
45  if (fail)
46  throw cms::Exception("BadDir") << __FILE__ << " " << __LINE__ << " could not create directory " << dirM;
47  }
48  out_.open(fname);
49  if (out_.fail())
50  throw cms::Exception("BadFile") << __FILE__ << " " << __LINE__ << " could not create file " << fname;
51 
52  } else
53  out_.open(fname, std::ofstream::app);
54 
55  out_ << "BX = " << (bitset<3>)bx_ << " Event : " << event_ << endl;
56 
57  for (unsigned int j = 0; j < matches_.size(); j++) {
58  string stubid = matches_[j].second->stubindex().str(); // stub ID
59  int projindex = matches_[j].first.second; // Allproj index
60  FPGAWord tmp;
61  if (projindex >= (1 << 7)) {
62  projindex = (1 << 7) - 1;
63  }
64  tmp.set(projindex, 7, true, __LINE__, __FILE__);
65  out_ << "0x";
66  out_ << std::setfill('0') << std::setw(2);
67  out_ << hex << j << dec;
68  out_ << " " << tmp.str() << "|" << stubid << " " << trklet::hexFormat(tmp.str() + stubid) << endl;
69  }
70  out_.close();
71 
72  bx_++;
73  event_++;
74  if (bx_ > 7)
75  bx_ = 0;
76 }
Settings.h
trklet::MemoryBase::settings_
Settings const & settings_
Definition: MemoryBase.h:50
MessageLogger.h
CandidateMatchMemory.h
trklet::Settings
Definition: Settings.h:31
trklet::CandidateMatchMemory::addMatch
void addMatch(std::pair< Tracklet *, int > tracklet, const Stub *stub)
Definition: CandidateMatchMemory.cc:17
trklet::Settings::memPath
std::string const & memPath() const
Definition: Settings.h:169
trklet::MemoryBase::event_
int event_
Definition: MemoryBase.h:48
trklet::MemoryBase::out_
std::ofstream out_
Definition: MemoryBase.h:46
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
trklet::MemoryBase::bx_
int bx_
Definition: MemoryBase.h:47
trklet::MemoryBase::getName
std::string const & getName() const
Definition: MemoryBase.h:19
trklet::Stub
Definition: Stub.h:16
first
auto first
Definition: CAHitNtupletGeneratorKernelsImpl.h:112
trklet::FPGAWord
Definition: FPGAWord.h:9
trklet::MemoryBase
Definition: MemoryBase.h:13
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::CandidateMatchMemory::writeCM
void writeCM(bool first)
Definition: CandidateMatchMemory.cc:31
Exception.h
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
Stub.h
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
trklet::CandidateMatchMemory::matches_
std::vector< std::pair< std::pair< Tracklet *, int >, const Stub * > > matches_
Definition: CandidateMatchMemory.h:34
Tracklet.h
trklet::MemoryBase::iSector_
unsigned int iSector_
Definition: MemoryBase.h:44