L1Trigger
TrackFindingTracklet
src
FullMatchMemory.cc
Go to the documentation of this file.
1
#include "
L1Trigger/TrackFindingTracklet/interface/FullMatchMemory.h
"
2
#include "
L1Trigger/TrackFindingTracklet/interface/Tracklet.h
"
3
#include "
L1Trigger/TrackFindingTracklet/interface/Stub.h
"
4
#include "
L1Trigger/TrackFindingTracklet/interface/L1TStub.h
"
5
#include "
FWCore/MessageLogger/interface/MessageLogger.h
"
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);
16
initLayerDisk
(
pos
+ 1,
layer_
,
disk_
);
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
42
void
FullMatchMemory::writeMC
(
bool
first
) {
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
Generated for CMSSW Reference Manual by
1.8.16