Skip to content
Open
Show file tree
Hide file tree
Changes from 40 commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
72c4f5a
trial
Jul 23, 2025
e5d45d0
ScRecMesonToOrbitFlatTable
caroll-costa Jul 29, 2025
b1d1d29
changes to DataFormats and L1TriggerScouting/Phase2/plugins
caroll-costa Jul 30, 2025
656f50d
corrections and now it runs (but it is not 100 correct)
caroll-costa Jul 30, 2025
f426e31
rho and phi module
caroll-costa Aug 2, 2025
f6c84d1
remove dummy
caroll-costa Aug 2, 2025
8a35029
H 2 Phi using rec Meson (with dummy values)
caroll-costa Aug 5, 2025
90faf2c
improvements
caroll-costa Aug 7, 2025
cce510d
more improvements
caroll-costa Aug 7, 2025
61f8a98
include also h to rho
caroll-costa Aug 7, 2025
931840b
Clean codebase from Carolina
RoccoA97 Aug 7, 2025
69c27da
Merge commit '931840b76a8294d0f634234dc662da4b86e52233' into 15_1_X_s…
caroll-costa Aug 8, 2025
5d119b9
changes and relax the minptQ condition for testing
caroll-costa Aug 8, 2025
d34d690
H to Phi/Rho + gamma using recMeson
caroll-costa Aug 9, 2025
fba64ee
JPsi rec meson + analyses with JPsi
caroll-costa Aug 11, 2025
9f689d3
corrections to analysis with Isolated Photons
caroll-costa Aug 12, 2025
46e62ee
new isolated photon class + timming
caroll-costa Aug 14, 2025
07ab893
cuts in python config
caroll-costa Aug 20, 2025
67d9a4a
optimization
caroll-costa Aug 21, 2025
f4b1f51
more optimization
caroll-costa Aug 21, 2025
c2a7d5c
cut in delta z
caroll-costa Aug 27, 2025
9a0cefc
first tracker track version
caroll-costa Aug 28, 2025
08258da
change at nanoAOD outputs
caroll-costa Sep 4, 2025
80820cb
implementing l1tracks - begining
caroll-costa Sep 5, 2025
597e442
fix from "phi" to "phi0"
caroll-costa Sep 5, 2025
1bb87a7
cleaning rec meson code (this will still not compile because of unrel…
caroll-costa Sep 10, 2025
2960951
implementing TTracks - not complete
caroll-costa Sep 10, 2025
17dfec5
Continue integration of L1 TTrack from Carolina's branch (on-going)
RoccoA97 Sep 14, 2025
e69c6c3
Merged 15_1_X_scoutingPhase2_PF from repository RoccoA97 with cms-mer…
caroll-costa Sep 15, 2025
42b3bc4
Bug fixes
RoccoA97 Sep 16, 2025
191486f
Merge branch 'RoccoA97/15_1_X_scoutingPhase2_PF' into 15_1_X_scouting…
Sep 16, 2025
8ada589
A lot of cleaning and more generic python configurations
RoccoA97 Sep 17, 2025
19f9b8a
tracker track rec mesons
caroll-costa Sep 17, 2025
f277e45
Merged 15_1_X_scoutingPhase2_PF from repository RoccoA97 with cms-mer…
caroll-costa Sep 17, 2025
ca1280b
corrections + rec meson with ttracks
caroll-costa Sep 18, 2025
d5c75d9
Merged 15_1_X_scoutingPhase2_PF from repository caroll-costa with cms…
RoccoA97 Sep 18, 2025
447d55f
Fix local phi bug in L1ScoutingTTrack unpacking
RoccoA97 Sep 19, 2025
a7e4a1f
Merged 15_1_X_scoutingPhase2_PF from repository RoccoA97 with cms-mer…
caroll-costa Sep 19, 2025
19a6ee7
Merge commit 'a7e4a1ff50d03b833978457444583d407eaf1fbe' into 15_1_X_s…
caroll-costa Sep 19, 2025
5605ddd
change Tkr to Tk
caroll-costa Sep 19, 2025
608d009
Tkr Rec Meson to Tk Rec Meson + corrections
caroll-costa Sep 19, 2025
4a1fc58
additional corrections
caroll-costa Sep 19, 2025
0cd27b8
remove unused isolationQ functions + z limit for isolation calculation
caroll-costa Sep 23, 2025
d464acc
correction in delta z limit for isolation calculation
caroll-costa Sep 23, 2025
c433e51
global modules for analyses
caroll-costa Sep 23, 2025
a59acc3
change names
caroll-costa Sep 23, 2025
b4718a2
some other fixes
caroll-costa Sep 23, 2025
20baf41
rec meson all cuts from the config file
caroll-costa Sep 24, 2025
11db07a
further corrections
caroll-costa Sep 24, 2025
2cbecb0
Merged 15_1_X_scoutingPhase2_PF from repository caroll-costa with cms…
RoccoA97 Sep 24, 2025
44d5a8a
Remove dependency from CLHEP
RoccoA97 Sep 24, 2025
23cbeb5
recMeson abstraction and daughter mass name change
caroll-costa Sep 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 90 additions & 0 deletions DataFormats/L1TParticleFlow/interface/L1ScoutingPF.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#ifndef DataFormats_L1TParticleFlow_L1ScoutingPF_h
#define DataFormats_L1TParticleFlow_L1ScoutingPF_h

#include <vector>
#include <utility>
#include <cstdint>
#include <Math/Vector4D.h>

namespace l1Scouting {
class PF {
public:
PF() {}
PF(float pt, float eta, float phi, uint8_t pid, float z0, float dxy, float pfw, uint8_t quality)
: pt_(pt), eta_(eta), phi_(phi), z0_(z0), dxy_(dxy), pfw_(pfw), pid_(pid), quality_(quality) {}
PF(float pt, float eta, float phi, uint8_t pid, float z0, float dxy, uint8_t quality)
: pt_(pt), eta_(eta), phi_(phi), z0_(z0), dxy_(dxy), pfw_(1.0f), pid_(pid), quality_(quality) {}
PF(float pt, float eta, float phi, uint8_t pid, float pfw, uint8_t quality)
: pt_(pt), eta_(eta), phi_(phi), z0_(0.0f), dxy_(0.0f), pfw_(pfw), pid_(pid), quality_(quality) {}

float pt() const { return pt_; }
float eta() const { return eta_; }
float phi() const { return phi_; }
float z0() const { return z0_; }
float dxy() const { return dxy_; }
float pfw() const { return pfw_; }
uint8_t pid() const { return pid_; }
int16_t pdgId() const { return PDGID_[pid_]; }
uint8_t quality() const { return quality_; }
float mass() const { return MASS_[pid_]; }
int charge() const { return (pid_ < 2) ? 0 : (2 * (pid_ & 1) - 1); }

void setPt(float pt) { pt_ = pt; }
void setEta(float eta) { eta_ = eta; }
void setPhi(float phi) { phi_ = phi; }
void setZ0(float z0) { z0_ = z0; }
void setDxy(float dxy) { dxy_ = dxy; }
void setPFw(float pfw) { pfw_ = pfw; }
void setPid(int8_t pid) { pid_ = pid; }
void setQuality(uint8_t quality) { quality_ = quality; }

ROOT::Math::PtEtaPhiMVector p4() const { return ROOT::Math::PtEtaPhiMVector(pt_, eta_, phi_, mass()); }

enum PIDs {
HadZero = 0,
Gamma = 1,
HadMinus = 2,
HadPlus = 3,
EleMinus = 4,
ElePlus = 5,
MuMinus = 6,
MuPlus = 7,
nPIDs = 8
};

private:
float pt_, eta_, phi_, z0_, dxy_, pfw_;
uint8_t pid_, quality_;

static constexpr int16_t PDGID_[nPIDs] = {130, 22, -211, 211, 11, -11, 13, -13};
static constexpr float MASS_[nPIDs] = {0.5, 0.0, 0.13, 0.13, 0.0005, 0.0005, 0.105, 0.105};
};

struct PFSOA {
std::vector<uint16_t> bx;
std::vector<uint32_t> offsets;
std::vector<float> pt, eta, phi, z0, dxy, pfw;
std::vector<int16_t> pdgId;
std::vector<uint8_t> quality;
PFSOA() : bx(), offsets(), pt(), eta(), phi(), z0(), dxy(), pfw(), pdgId(), quality() {}
PFSOA(const PFSOA& other) = default;
PFSOA(PFSOA&& other) = default;
PFSOA& operator=(const PFSOA& other) = default;
PFSOA& operator=(PFSOA&& other) = default;
void swap(PFSOA& other) {
using std::swap;
swap(bx, other.bx);
swap(offsets, other.offsets);
swap(pt, other.pt);
swap(eta, other.eta);
swap(phi, other.phi);
swap(z0, other.z0);
swap(dxy, other.dxy);
swap(pfw, other.pfw);
swap(pdgId, other.pdgId);
swap(quality, other.quality);
}
};
inline void swap(PFSOA& a, PFSOA& b) { a.swap(b); }
} // namespace l1Scouting
#endif
48 changes: 48 additions & 0 deletions DataFormats/L1TParticleFlow/interface/L1ScoutingTTrack.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#ifndef DataFormats_L1TParticleFlow_TTrack_h
#define DataFormats_L1TParticleFlow_TTrack_h

#include <algorithm>
#include <array>
#include <bitset>
#include <cmath>
#include <limits>
#include <string>
#include <vector>

namespace l1Scouting {
class TTrack {
public:
TTrack() {}
TTrack(float pt, float eta, float phi, float z0, float dxy, float mvaQuality, uint8_t nStub, uint8_t quality, int8_t charge)
: pt_(pt), eta_(eta), phi_(phi), z0_(z0), dxy_(dxy), mvaQuality_(mvaQuality), nStub_(nStub), quality_(quality), charge_(charge) {}

float pt() const { return pt_; }
float eta() const { return eta_; }
float phi() const { return phi_; }
float z0() const { return z0_; }
float dxy() const { return dxy_; }
float mvaQuality() const { return mvaQuality_; }
uint8_t nStub() const { return nStub_; }
uint8_t quality() const { return quality_; }
int8_t charge() const { return charge_; }

private:
float pt_, eta_, phi_, z0_, dxy_, mvaQuality_;
uint8_t nStub_, quality_;
int8_t charge_;
};

struct TTrackSOA {
std::vector<uint16_t> bx;
std::vector<uint32_t> offsets;
std::vector<float> pt, eta, phi, z0, dxy, mvaQuality;
std::vector<uint8_t> nStub, quality;
std::vector<int8_t> charge;
TTrackSOA() : bx(), offsets(), pt(), eta(), phi(), z0(), dxy(), mvaQuality(), nStub(), quality(), charge() {}
TTrackSOA(const TTrackSOA& other) = default;
TTrackSOA(TTrackSOA&& other) = default;
TTrackSOA& operator=(const TTrackSOA& other) = default;
TTrackSOA& operator=(TTrackSOA&& other) = default;
};
};
#endif
14 changes: 14 additions & 0 deletions DataFormats/L1TParticleFlow/interface/L1ScoutingTkEm.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,19 @@ namespace l1Scouting {
float z0_;
};

class IsoTkEm : public TkEm {
public:
IsoTkEm() {}
IsoTkEm(float pt, float eta, float phi, uint8_t quality, float isolation, int8_t id)
: TkEm(pt, eta, phi, quality, isolation), id_(id){}

int8_t id() const { return id_; }

void setId(int8_t id) { id_ = id; }

private:
int8_t id_;
};

} // namespace l1Scouting
#endif
51 changes: 51 additions & 0 deletions DataFormats/L1TParticleFlow/interface/RecMeson.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#ifndef DataFormats_L1TParticleFlow_RecMeson_h
#define DataFormats_L1TParticleFlow_RecMeson_h

#include <vector>
#include <utility>
#include <cstdint>
#include <Math/Vector4D.h>

namespace l1Scouting {
class RecMeson {
public:
RecMeson() {}
RecMeson(float pt, float eta, float phi, float mass, int charge, float dmass1, float dmass2, int pdgId, int id1, int id2, float isoDR0p25)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dmass → maybe daughterMass or dauMass to make it more understandable?
also I'm wondering if the name should make it more explicit that it's a two-object thing (e.g. it would not work for a 3-prong Ds like in the W → Ds γ analysis.
Maybe one could have a RecMeson that defines just the common part and then a RecMeson2 that inherits from RecMeson and adds the variables of the two daughters so that later we can have RecMeson3 with 3 (or even define a template class RecMeson { ... that holds a std::array<float,N> daughterMass_ etc , and then have a typedef RecMeson2 RecMeson<2> )

: pt_(pt), eta_(eta), phi_(phi), mass_(mass), charge_(charge), dmass1_(dmass1), dmass2_(dmass2), pdgId_(pdgId), id1_(id1), id2_(id2), isoDR0p25_(isoDR0p25) {}

float pt() const { return pt_; }
float eta() const { return eta_; }
float phi() const { return phi_; }
float mass() const { return mass_; }
int charge() const { return charge_; }
float dmass1() const { return dmass1_; }
float dmass2() const { return dmass2_; }
int pdgId() const { return pdgId_; }
int id1() const { return id1_; }
int id2() const { return id2_; }
float isoDR0p25() const { return isoDR0p25_; }
ROOT::Math::PtEtaPhiMVector p4() const { return ROOT::Math::PtEtaPhiMVector(pt_, eta_, phi_, mass()); }

void setPt(float pt) { pt_ = pt; }
void setEta(float eta) { eta_ = eta; }
void setPhi(float phi) { phi_ = phi; }
void setMass(float mass) { mass_ = mass; }
void setCharge(int charge) { charge_ = charge; }
void setDmass1(float dmass1) { dmass1_ = dmass1; }
void setDmass2(float dmass2) { dmass2_ = dmass2; }
void setPdgId(int pdgId) { pdgId_ = pdgId; }
void setId1(int id1) { id1_ = id1; }
void setId2(int id2) { id2_ = id2; }
void setIsoDR0p25(float isoDR0p25) { isoDR0p25_ = isoDR0p25; }


private:
float pt_, eta_, phi_, mass_;
int charge_;
float dmass1_, dmass2_;
int pdgId_;
int id1_, id2_;
float isoDR0p25_;
};
} // namespace l1Scouting
#endif
1 change: 1 addition & 0 deletions DataFormats/L1TParticleFlow/src/L1ScoutingPF.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "DataFormats/L1TParticleFlow/interface/L1ScoutingPF.h"
1 change: 1 addition & 0 deletions DataFormats/L1TParticleFlow/src/L1ScoutingTTrack.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "DataFormats/L1TParticleFlow/interface/L1ScoutingTTrack.h"
1 change: 1 addition & 0 deletions DataFormats/L1TParticleFlow/src/RecMeson.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#include "DataFormats/L1TParticleFlow/interface/RecMeson.h"
5 changes: 4 additions & 1 deletion DataFormats/L1TParticleFlow/src/classes.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
#include "DataFormats/L1TParticleFlow/interface/PFTau.h"
#include "DataFormats/L1TParticleFlow/interface/HPSPFTau.h"
#include "DataFormats/L1TParticleFlow/interface/HPSPFTauFwd.h"
#include "DataFormats/L1TParticleFlow/interface/RecMeson.h"
#include "DataFormats/L1TParticleFlow/interface/L1ScoutingPuppi.h"
// #include "DataFormats/L1TParticleFlow/interface/L1ScoutingPF.h"
#include "DataFormats/L1TParticleFlow/interface/L1ScoutingTkEm.h"
#include "DataFormats/L1Scouting/interface/OrbitCollection.h"
#include "DataFormats/L1TParticleFlow/interface/L1ScoutingTTrack.h"
#include "DataFormats/L1Scouting/interface/OrbitCollection.h"
38 changes: 30 additions & 8 deletions DataFormats/L1TParticleFlow/src/classes_def.xml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<lcgdict>

<class name="l1t::PFCluster" ClassVersion="4">
<version ClassVersion="4" checksum="3917005656"/>
<version ClassVersion="3" checksum="1668592434"/>
</class>
</class>
<class name="l1t::PFClusterCollection"/>
<class name="edm::Wrapper<l1t::PFClusterCollection>" />
<class name="edm::Ref<l1t::PFClusterCollection>" />
<class name="edm::RefVector<l1t::PFClusterCollection>" />
<class name="edm::RefVector<l1t::PFClusterCollection>" />

<class name="l1t::PFTrack::TrackRef" />
<class name="l1t::PFTrack" ClassVersion="4">
Expand All @@ -17,9 +17,14 @@
<class name="l1t::PFTrackCollection" />
<class name="edm::Wrapper<l1t::PFTrackCollection>" />
<class name="edm::Ref<l1t::PFTrackCollection>" />
<class name="edm::RefVector<l1t::PFTrackCollection>" />
<class name="edm::RefVector<l1t::PFTrackCollection>" />
<class name="std::vector<edm::Ref<l1t::PFTrackCollection> >" />

<class name="l1Scouting::RecMeson" />
<class name="std::vector<l1Scouting::RecMeson>"/>
<class name="OrbitCollection<l1Scouting::RecMeson>" />
<class name="edm::Wrapper<OrbitCollection<l1Scouting::RecMeson>>" />

<class name="l1t::PFCandidate" ClassVersion="7">
<version ClassVersion="7" checksum="2118795037"/>
<version ClassVersion="6" checksum="2195440462"/>
Expand All @@ -36,6 +41,7 @@
<class name="edm::Wrapper<l1t::RegionalOutput<l1t::PFCandidateCollection>>" />
<class name="OrbitCollection<l1t::PFCandidate>" />
<class name="edm::Wrapper<OrbitCollection<l1t::PFCandidate>>" />

<class name="l1Scouting::Puppi" ClassVersion="3">
<version ClassVersion="3" checksum="3223900940"/>
</class>
Expand All @@ -59,6 +65,22 @@
<class name="OrbitCollection<l1Scouting::TkEle>" />
<class name="edm::Wrapper<OrbitCollection<l1Scouting::TkEle>>" />

<class name="l1Scouting::IsoTkEm" ClassVersion="3">
<version ClassVersion="3" checksum="39808717"/>
</class>
<class name="std::vector<l1Scouting::IsoTkEm>" />
<class name="OrbitCollection<l1Scouting::IsoTkEm>" />
<class name="edm::Wrapper<OrbitCollection<l1Scouting::IsoTkEm>>" />

<class name="l1Scouting::TTrack" ClassVersion="3">
<version ClassVersion="3" checksum="2404234549"/>
</class>
<class name="std::vector<l1Scouting::TTrack>" />
<class name="OrbitCollection<l1Scouting::TTrack>" />
<class name="edm::Wrapper<OrbitCollection<l1Scouting::TTrack>>" />
<class name="l1Scouting::TTrackSOA" />
<class name="edm::Wrapper<l1Scouting::TTrackSOA>" />

<class name="l1t::PFJet" ClassVersion="6">
<version ClassVersion="6" checksum="2599349078"/>
<version ClassVersion="5" checksum="2270932343"/>
Expand All @@ -78,9 +100,9 @@
</class>
<class name="l1t::PFTauCollection" />
<class name="edm::Wrapper<l1t::PFTauCollection>" />
<class name="edm::Ref<l1t::PFTauCollection>" />
<class name="edm::RefVector<l1t::PFTauCollection>" />
<class name="std::vector<edm::Ref<l1t::PFTauCollection> >" />
<class name="edm::Ref<l1t::PFTauCollection>" />
<class name="edm::RefVector<l1t::PFTauCollection>" />
<class name="std::vector<edm::Ref<l1t::PFTauCollection> >" />

<class name="l1t::HPSPFTau" ClassVersion="14">
<version ClassVersion="14" checksum="927489833"/>
Expand All @@ -91,7 +113,7 @@
<class name="l1t::HPSPFTauCollection"/>
<class name="edm::Wrapper<l1t::HPSPFTauCollection>"/>
<class name="edm::Ref<l1t::HPSPFTauCollection>" />
<class name="edm::RefVector<l1t::HPSPFTauCollection>" />
<class name="edm::RefVector<l1t::HPSPFTauCollection>" />
<class name="std::vector<edm::Ref<l1t::HPSPFTauCollection> >" />

</lcgdict>
2 changes: 2 additions & 0 deletions L1TriggerScouting/Phase2/BuildFile.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
<use name="FWCore/Framework"/>
<use name="EventFilter/Utilities"/>
<use name="DataFormats/CLHEP"/>
<use name="DataFormats/L1Scouting"/>
<use name="DataFormats/L1Trigger"/>
<use name="DataFormats/L1TParticleFlow"/>
<use name="DataFormats/L1TrackTrigger"/>
<use name="rootvecops"/>
<export>
<lib name="1"/>
Expand Down
Loading