CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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) : MemoryBase(name, settings) {}
15 
16 void CandidateMatchMemory::addMatch(std::pair<Tracklet*, int> tracklet, const Stub* stub) {
17  std::pair<std::pair<Tracklet*, int>, const Stub*> tmp(tracklet, stub);
18 
19  //Check for consistency
20  for (auto& match : matches_) {
21  if (tracklet.first->TCID() < match.first.first->TCID()) {
22  throw cms::Exception("LogicError") << __FILE__ << " " << __LINE__ << " In " << getName() << " adding tracklet "
23  << tracklet.first << " with lower TCID : " << tracklet.first->TCID()
24  << " than earlier TCID " << match.first.first->TCID();
25  }
26  }
27  matches_.push_back(tmp);
28 }
29 
30 void CandidateMatchMemory::writeCM(bool first, unsigned int iSector) {
31  iSector_ = iSector;
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  openfile(out_, first, dirM, fname, __FILE__, __LINE__);
40 
41  out_ << "BX = " << (bitset<3>)bx_ << " Event : " << event_ << endl;
42 
43  for (unsigned int j = 0; j < matches_.size(); j++) {
44  string stubid = matches_[j].second->stubindex().str(); // stub ID
45  int projindex = matches_[j].first.second; // Allproj index
46  FPGAWord tmp;
47  if (projindex >= (1 << 7)) {
48  projindex = (1 << 7) - 1;
49  }
50  tmp.set(projindex, 7, true, __LINE__, __FILE__);
51  out_ << "0x";
52  out_ << std::setfill('0') << std::setw(2);
53  out_ << hex << j << dec;
54  out_ << " " << tmp.str() << "|" << stubid << " " << trklet::hexFormat(tmp.str() + stubid) << endl;
55  }
56  out_.close();
57 
58  bx_++;
59  event_++;
60  if (bx_ > 7)
61  bx_ = 0;
62 }
std::string memPath() const
Definition: Settings.h:192
unsigned int iSector_
Definition: MemoryBase.h:44
void writeCM(bool first, unsigned int iSector)
void addMatch(std::pair< Tracklet *, int > tracklet, const Stub *stub)
std::string hexFormat(const std::string &binary)
Definition: Util.h:19
std::string const & getName() const
Definition: MemoryBase.h:19
Settings const & settings_
Definition: MemoryBase.h:50
std::ofstream out_
Definition: MemoryBase.h:46
void set(int value, int nbits, bool positive=true, int line=-1, const char *file=nullptr)
Definition: FPGAWord.cc:14
std::vector< std::pair< std::pair< Tracklet *, int >, const Stub * > > matches_
string fname
main script
std::string str() const
Definition: FPGAWord.cc:54
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
tmp
align.sh
Definition: createJobs.py:716
std::ofstream openfile(const std::string &dir, const std::string &fname, const char *file, int line)
Definition: Util.h:139