Skip to content

Commit 692e417

Browse files
authored
Merge pull request cms-sw#37149 from mmasciov/run3ScoutingHitPatternPOD
Revisit usage of HitPattern in DataFormats/Scouting
2 parents 052cc13 + 09681e7 commit 692e417

File tree

10 files changed

+69
-13
lines changed

10 files changed

+69
-13
lines changed

DataFormats/Scouting/BuildFile.xml

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
<use name="DataFormats/TrackReco"/>
21
<use name="DataFormats/Common"/>
32
<export>
43
<lib name="1"/>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#ifndef DataFormats_Scouting_Run3ScoutingHitPatternPOD_h
2+
#define DataFormats_Scouting_Run3ScoutingHitPatternPOD_h
3+
4+
#include <vector>
5+
#include <cstdint>
6+
7+
struct Run3ScoutingHitPatternPOD {
8+
uint8_t hitCount;
9+
uint8_t beginTrackHits;
10+
uint8_t endTrackHits;
11+
uint8_t beginInner;
12+
uint8_t endInner;
13+
uint8_t beginOuter;
14+
uint8_t endOuter;
15+
std::vector<uint16_t> hitPattern;
16+
};
17+
18+
#endif

DataFormats/Scouting/interface/Run3ScoutingMuon.h

+9-9
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
#ifndef DataFormats_Run3ScoutingMuon_h
2-
#define DataFormats_Run3ScoutingMuon_h
1+
#ifndef DataFormats_Scouting_Run3ScoutingMuon_h
2+
#define DataFormats_Scouting_Run3ScoutingMuon_h
33

44
#include <vector>
5-
#include "DataFormats/TrackReco/interface/Track.h"
5+
#include "DataFormats/Scouting/interface/Run3ScoutingHitPatternPOD.h"
66

77
// Class for holding muon information, for use in data scouting
88
// IMPORTANT: the content of this class should be changed only in backwards compatible ways!
@@ -63,8 +63,8 @@ class Run3ScoutingMuon {
6363
float trk_vx,
6464
float trk_vy,
6565
float trk_vz,
66-
reco::HitPattern trk_hitPattern,
67-
std::vector<int> vtxIndx)
66+
std::vector<int> vtxIndx,
67+
Run3ScoutingHitPatternPOD trk_hitPattern)
6868
: pt_(pt),
6969
eta_(eta),
7070
phi_(phi),
@@ -119,8 +119,8 @@ class Run3ScoutingMuon {
119119
trk_vx_(trk_vx),
120120
trk_vy_(trk_vy),
121121
trk_vz_(trk_vz),
122-
trk_hitPattern_(trk_hitPattern),
123-
vtxIndx_(std::move(vtxIndx)) {}
122+
vtxIndx_(std::move(vtxIndx)),
123+
trk_hitPattern_(trk_hitPattern) {}
124124
//default constructor
125125
Run3ScoutingMuon()
126126
: pt_(0),
@@ -237,8 +237,8 @@ class Run3ScoutingMuon {
237237
float trk_vx() const { return trk_vx_; }
238238
float trk_vy() const { return trk_vy_; }
239239
float trk_vz() const { return trk_vz_; }
240-
reco::HitPattern const& trk_hitPattern() const { return trk_hitPattern_; }
241240
std::vector<int> const& vtxIndx() const { return vtxIndx_; }
241+
Run3ScoutingHitPatternPOD const& trk_hitPattern() const { return trk_hitPattern_; }
242242

243243
private:
244244
float pt_;
@@ -295,8 +295,8 @@ class Run3ScoutingMuon {
295295
float trk_vx_;
296296
float trk_vy_;
297297
float trk_vz_;
298-
reco::HitPattern trk_hitPattern_;
299298
std::vector<int> vtxIndx_;
299+
Run3ScoutingHitPatternPOD trk_hitPattern_;
300300
};
301301

302302
typedef std::vector<Run3ScoutingMuon> Run3ScoutingMuonCollection;

DataFormats/Scouting/src/classes.h

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "DataFormats/Scouting/interface/ScoutingMuon.h"
88
#include "DataFormats/Scouting/interface/ScoutingPhoton.h"
99
#include "DataFormats/Scouting/interface/Run3ScoutingCaloJet.h"
10+
#include "DataFormats/Scouting/interface/Run3ScoutingHitPatternPOD.h"
1011
#include "DataFormats/Scouting/interface/Run3ScoutingPFJet.h"
1112
#include "DataFormats/Scouting/interface/Run3ScoutingParticle.h"
1213
#include "DataFormats/Scouting/interface/Run3ScoutingTrack.h"

DataFormats/Scouting/src/classes_def.xml

+5-1
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,9 @@
4444
<version ClassVersion="3" checksum="1086011373"/>
4545
<version ClassVersion="4" checksum="1250202632"/>
4646
</class>
47-
<class name="Run3ScoutingMuon" ClassVersion="3">
47+
<class name="Run3ScoutingMuon" ClassVersion="4">
4848
<version ClassVersion="3" checksum="3882497397"/>
49+
<version ClassVersion="4" checksum="4206297195"/>
4950
</class>
5051
<class name="Run3ScoutingPhoton" ClassVersion="4">
5152
<version ClassVersion="3" checksum="1683146807"/>
@@ -54,6 +55,9 @@
5455
<class name="Run3ScoutingTrack" ClassVersion="3">
5556
<version ClassVersion="3" checksum="3352318277"/>
5657
</class>
58+
<class name="Run3ScoutingHitPatternPOD" ClassVersion="3">
59+
<version ClassVersion="3" checksum="1448115564"/>
60+
</class>
5761
<class name="std::vector<ScoutingCaloJet>"/>
5862
<class name="std::vector<ScoutingPFJet>"/>
5963
<class name="std::vector<ScoutingParticle>"/>

DataFormats/TrackReco/BuildFile.xml

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
<use name="DataFormats/GeometryVector"/>
77
<use name="DataFormats/Math"/>
88
<use name="DataFormats/MuonDetId"/>
9+
<use name="DataFormats/Scouting"/>
910
<use name="DataFormats/SiPixelCluster"/>
1011
<use name="DataFormats/SiPixelDetId"/>
1112
<use name="DataFormats/SiStripCluster"/>

DataFormats/TrackReco/interface/HitPattern.h

+6
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@
124124
#include "DataFormats/SiStripDetId/interface/StripSubdetector.h"
125125
#include "DataFormats/MuonDetId/interface/MuonSubdetId.h"
126126
#include "DataFormats/ForwardDetId/interface/MTDDetId.h"
127+
#include "DataFormats/Scouting/interface/Run3ScoutingHitPatternPOD.h"
127128
#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
128129
#include "DataFormats/TrackingRecHit/interface/TrackingRecHitFwd.h"
129130
#include "FWCore/Utilities/interface/Likely.h"
@@ -229,6 +230,8 @@ namespace reco {
229230

230231
HitPattern(const HitPattern &other);
231232

233+
HitPattern(const Run3ScoutingHitPatternPOD &other);
234+
232235
HitPattern &operator=(const HitPattern &other);
233236

234237
template <typename I>
@@ -424,6 +427,9 @@ namespace reco {
424427
int numberOfDTStationsWithRZView() const;
425428
int numberOfDTStationsWithBothViews() const;
426429

430+
// fill Run3ScoutingHitPatternPOD struct
431+
Run3ScoutingHitPatternPOD run3ScoutingHitPatternPOD() const;
432+
427433
//only used by ROOT IO rule to read v12 HitPatterns
428434
static bool fillNewHitPatternWithOldHitPattern_v12(const uint16_t oldHitPattern[],
429435
uint8_t hitCount,

DataFormats/TrackReco/src/HitPattern.cc

+26
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,19 @@ HitPattern::HitPattern(const HitPattern& other)
3232
memcpy(this->hitPattern, other.hitPattern, sizeof(uint16_t) * HitPattern::ARRAY_LENGTH);
3333
}
3434

35+
HitPattern::HitPattern(const Run3ScoutingHitPatternPOD& other)
36+
: hitCount(other.hitCount),
37+
beginTrackHits(other.beginTrackHits),
38+
endTrackHits(other.endTrackHits),
39+
beginInner(other.beginInner),
40+
endInner(other.endInner),
41+
beginOuter(other.beginOuter),
42+
endOuter(other.endOuter) {
43+
const unsigned short max_vector_length =
44+
(other.hitPattern.size() > HitPattern::ARRAY_LENGTH) ? HitPattern::ARRAY_LENGTH : other.hitPattern.size();
45+
std::copy(other.hitPattern.begin(), other.hitPattern.begin() + max_vector_length, this->hitPattern);
46+
}
47+
3548
HitPattern::~HitPattern() { ; }
3649

3750
HitPattern& HitPattern::operator=(const HitPattern& other) {
@@ -1013,3 +1026,16 @@ bool HitPattern::insertExpectedOuterHit(const uint16_t pattern) {
10131026

10141027
return true;
10151028
}
1029+
1030+
Run3ScoutingHitPatternPOD HitPattern::run3ScoutingHitPatternPOD() const {
1031+
Run3ScoutingHitPatternPOD result{
1032+
.hitCount = hitCount,
1033+
.beginTrackHits = beginTrackHits,
1034+
.endTrackHits = endTrackHits,
1035+
.beginInner = beginInner,
1036+
.endInner = endInner,
1037+
.beginOuter = beginOuter,
1038+
.endOuter = endOuter,
1039+
.hitPattern = std::vector<uint16_t>(hitPattern, hitPattern + HitPattern::ARRAY_LENGTH)};
1040+
return result;
1041+
}

HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -284,8 +284,8 @@ void HLTScoutingMuonProducer::produce(edm::StreamID sid, edm::Event& iEvent, edm
284284
track->vx(),
285285
track->vy(),
286286
track->vz(),
287-
track->hitPattern(),
288-
vtxInd);
287+
vtxInd,
288+
track->hitPattern().run3ScoutingHitPatternPOD());
289289
vtxInd.clear();
290290
}
291291

HLTrigger/Muon/plugins/HLTScoutingMuonProducer.h

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ Description: Producer for Run3ScoutingMuon
3939
#include "DataFormats/VertexReco/interface/Vertex.h"
4040
#include "DataFormats/VertexReco/interface/VertexFwd.h"
4141

42+
#include "DataFormats/Scouting/interface/Run3ScoutingHitPatternPOD.h"
4243
#include "DataFormats/Scouting/interface/Run3ScoutingMuon.h"
4344
#include "DataFormats/Scouting/interface/Run3ScoutingVertex.h"
4445

0 commit comments

Comments
 (0)