Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "Alignment/MuonAlignment/interface/AlignableMuon.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/Run.h"
#include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentParameterStore.h"
#include "DataFormats/TrackReco/interface/Track.h"

Expand Down Expand Up @@ -54,6 +55,9 @@ class AlignmentMonitorBase {
/// Called at beginning of job: don't reimplement
void beginOfJob(AlignableTracker *pTracker, AlignableMuon *pMuon, AlignmentParameterStore *pStore);

/// Called at beginning of run: don't reimplement
void beginRun(const edm::Run &iRun, const edm::EventSetup &iSetup);

/// Called at beginning of loop: don't reimplement
void startingNewLoop();

Expand All @@ -73,6 +77,9 @@ class AlignmentMonitorBase {
/// Book or retrieve histograms; MUST be reimplemented
virtual void book() = 0;

/// Called at beginning of run (by "beginRun()"): may be reimplemented
virtual void runBegin(const edm::Run &iRun, const edm::EventSetup &iSetup) {}

/// Called for each event (by "run()"): may be reimplemented
virtual void event(const edm::Event &iEvent,
const edm::EventSetup &iSetup,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ class AlignmentMonitorMuonSystemMap1D : public AlignmentMonitorBase {

void book() override;

void runBegin(const edm::Run &iRun, const edm::EventSetup &iSetup) override;

void event(const edm::Event &iEvent,
const edm::EventSetup &iSetup,
const ConstTrajTrackPairCollection &iTrajTracks) override;
Expand All @@ -51,6 +53,7 @@ class AlignmentMonitorMuonSystemMap1D : public AlignmentMonitorBase {
// es token
const edm::ESGetToken<GlobalTrackingGeometry, GlobalTrackingGeometryRecord> m_esTokenGBTGeom;
const edm::ESGetToken<DetIdAssociator, DetIdAssociatorRecord> m_esTokenDetId;
const DetIdAssociator *m_muonDetIdAssociator = nullptr;
const edm::ESGetToken<Propagator, TrackingComponentsRecord> m_esTokenProp;
const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> m_esTokenMF;
const MuonResidualsFromTrack::BuilderToken m_esTokenBuilder;
Expand Down Expand Up @@ -157,7 +160,7 @@ AlignmentMonitorMuonSystemMap1D::AlignmentMonitorMuonSystemMap1D(const edm::Para
edm::ConsumesCollector iC)
: AlignmentMonitorBase(cfg, iC, "AlignmentMonitorMuonSystemMap1D"),
m_esTokenGBTGeom(iC.esConsumes()),
m_esTokenDetId(iC.esConsumes(edm::ESInputTag("", "MuonDetIdAssociator"))),
m_esTokenDetId(iC.esConsumes<edm::Transition::BeginRun>(edm::ESInputTag("", "MuonDetIdAssociator"))),
m_esTokenProp(iC.esConsumes(edm::ESInputTag("", "SteppingHelixPropagatorAny"))),
m_esTokenMF(iC.esConsumes()),
m_esTokenBuilder(iC.esConsumes(MuonResidualsFromTrack::builderESInputTag())),
Expand Down Expand Up @@ -220,6 +223,10 @@ std::string AlignmentMonitorMuonSystemMap1D::num02d(int num) {
return std::string(tmp);
}

void AlignmentMonitorMuonSystemMap1D::runBegin(const edm::Run &iRun, const edm::EventSetup &iSetup) {
m_muonDetIdAssociator = &iSetup.getData(m_esTokenDetId);
}

void AlignmentMonitorMuonSystemMap1D::book() {
std::string wheel_label[5] = {"A", "B", "C", "D", "E"};

Expand Down Expand Up @@ -298,7 +305,7 @@ void AlignmentMonitorMuonSystemMap1D::event(const edm::Event &iEvent,
const edm::Handle<reco::BeamSpot> &beamSpot = iEvent.getHandle(bsToken_);

const GlobalTrackingGeometry *globalGeometry = &iSetup.getData(m_esTokenGBTGeom);
const DetIdAssociator *muonDetIdAssociator_ = &iSetup.getData(m_esTokenDetId);
const DetIdAssociator *muonDetIdAssociator_ = m_muonDetIdAssociator;
const Propagator *prop = &iSetup.getData(m_esTokenProp);
const MagneticField *magneticField = &iSetup.getData(m_esTokenMF);
auto builder = iSetup.getHandle(m_esTokenBuilder);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ class AlignmentMonitorMuonVsCurvature : public AlignmentMonitorBase {

void book() override;

void runBegin(const edm::Run &iRun, const edm::EventSetup &iSetup) override;

void event(const edm::Event &iEvent,
const edm::EventSetup &iSetup,
const ConstTrajTrackPairCollection &iTrajTracks) override;
Expand All @@ -47,6 +49,7 @@ class AlignmentMonitorMuonVsCurvature : public AlignmentMonitorBase {
// es token
const edm::ESGetToken<GlobalTrackingGeometry, GlobalTrackingGeometryRecord> m_esTokenGBTGeom;
const edm::ESGetToken<DetIdAssociator, DetIdAssociatorRecord> m_esTokenDetId;
const DetIdAssociator *m_muonDetIdAssociator = nullptr;
const edm::ESGetToken<Propagator, TrackingComponentsRecord> m_esTokenProp;
const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> m_esTokenMF;
const MuonResidualsFromTrack::BuilderToken m_esTokenBuilder;
Expand Down Expand Up @@ -89,7 +92,7 @@ AlignmentMonitorMuonVsCurvature::AlignmentMonitorMuonVsCurvature(const edm::Para
edm::ConsumesCollector iC)
: AlignmentMonitorBase(cfg, iC, "AlignmentMonitorMuonVsCurvature"),
m_esTokenGBTGeom(iC.esConsumes()),
m_esTokenDetId(iC.esConsumes(edm::ESInputTag("", "MuonDetIdAssociator"))),
m_esTokenDetId(iC.esConsumes<edm::Transition::BeginRun>(edm::ESInputTag("", "MuonDetIdAssociator"))),
m_esTokenProp(iC.esConsumes(edm::ESInputTag("", "SteppingHelixPropagatorAny"))),
m_esTokenMF(iC.esConsumes()),
m_esTokenBuilder(iC.esConsumes(MuonResidualsFromTrack::builderESInputTag())),
Expand All @@ -111,6 +114,10 @@ AlignmentMonitorMuonVsCurvature::AlignmentMonitorMuonVsCurvature(const edm::Para
bsToken_(iC.consumes<reco::BeamSpot>(m_beamSpotTag)),
muonToken_(iC.consumes<reco::MuonCollection>(m_muonCollectionTag)) {}

void AlignmentMonitorMuonVsCurvature::runBegin(const edm::Run &iRun, const edm::EventSetup &iSetup) {
m_muonDetIdAssociator = &iSetup.getData(m_esTokenDetId);
}

void AlignmentMonitorMuonVsCurvature::book() {
// DT
std::string wheelname[5] = {"wheelm2_", "wheelm1_", "wheelz_", "wheelp1_", "wheelp2_"};
Expand Down Expand Up @@ -204,7 +211,7 @@ void AlignmentMonitorMuonVsCurvature::event(const edm::Event &iEvent,
const edm::Handle<reco::BeamSpot> &beamSpot = iEvent.getHandle(bsToken_);

const GlobalTrackingGeometry *globalGeometry = &iSetup.getData(m_esTokenGBTGeom);
const DetIdAssociator *muonDetIdAssociator_ = &iSetup.getData(m_esTokenDetId);
const DetIdAssociator *muonDetIdAssociator_ = m_muonDetIdAssociator;
const Propagator *prop = &iSetup.getData(m_esTokenProp);
const MagneticField *magneticField = &iSetup.getData(m_esTokenMF);
auto builder = iSetup.getHandle(m_esTokenBuilder);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ class AlignmentMonitorSegmentDifferences : public AlignmentMonitorBase {

void book() override;

void runBegin(const edm::Run &iRun, const edm::EventSetup &iSetup) override;

void event(const edm::Event &iEvent,
const edm::EventSetup &iSetup,
const ConstTrajTrackPairCollection &iTrajTracks) override;
Expand All @@ -47,6 +49,7 @@ class AlignmentMonitorSegmentDifferences : public AlignmentMonitorBase {
// es token
const edm::ESGetToken<GlobalTrackingGeometry, GlobalTrackingGeometryRecord> m_esTokenGBTGeom;
const edm::ESGetToken<DetIdAssociator, DetIdAssociatorRecord> m_esTokenDetId;
const DetIdAssociator *m_muonDetIdAssociator = nullptr;
const edm::ESGetToken<Propagator, TrackingComponentsRecord> m_esTokenProp;
const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> m_esTokenMF;
const MuonResidualsFromTrack::BuilderToken m_esTokenBuilder;
Expand Down Expand Up @@ -122,7 +125,7 @@ AlignmentMonitorSegmentDifferences::AlignmentMonitorSegmentDifferences(const edm
edm::ConsumesCollector iC)
: AlignmentMonitorBase(cfg, iC, "AlignmentMonitorSegmentDifferences"),
m_esTokenGBTGeom(iC.esConsumes()),
m_esTokenDetId(iC.esConsumes(edm::ESInputTag("", "MuonDetIdAssociator"))),
m_esTokenDetId(iC.esConsumes<edm::Transition::BeginRun>(edm::ESInputTag("", "MuonDetIdAssociator"))),
m_esTokenProp(iC.esConsumes(edm::ESInputTag("", "SteppingHelixPropagatorAny"))),
m_esTokenMF(iC.esConsumes()),
m_esTokenBuilder(iC.esConsumes(MuonResidualsFromTrack::builderESInputTag())),
Expand All @@ -142,6 +145,10 @@ AlignmentMonitorSegmentDifferences::AlignmentMonitorSegmentDifferences(const edm
bsToken_(iC.consumes<reco::BeamSpot>(m_beamSpotTag)),
muonToken_(iC.consumes<reco::MuonCollection>(m_muonCollectionTag)) {}

void AlignmentMonitorSegmentDifferences::runBegin(const edm::Run &iRun, const edm::EventSetup &iSetup) {
m_muonDetIdAssociator = &iSetup.getData(m_esTokenDetId);
}

void AlignmentMonitorSegmentDifferences::book() {
char name[225], pos[228], neg[228];

Expand Down Expand Up @@ -379,7 +386,7 @@ void AlignmentMonitorSegmentDifferences::event(const edm::Event &iEvent,
const edm::Handle<reco::BeamSpot> &beamSpot = iEvent.getHandle(bsToken_);

const GlobalTrackingGeometry *globalGeometry = &iSetup.getData(m_esTokenGBTGeom);
const DetIdAssociator *muonDetIdAssociator_ = &iSetup.getData(m_esTokenDetId);
const DetIdAssociator *muonDetIdAssociator_ = m_muonDetIdAssociator;
const Propagator *prop = &iSetup.getData(m_esTokenProp);
const MagneticField *magneticField = &iSetup.getData(m_esTokenMF);
auto builder = iSetup.getHandle(m_esTokenBuilder);
Expand Down
2 changes: 2 additions & 0 deletions Alignment/CommonAlignmentMonitor/src/AlignmentMonitorBase.cc
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ void AlignmentMonitorBase::beginOfJob(AlignableTracker *pTracker,
mp_navigator = new AlignableNavigator(pTracker, pMuon);
}

void AlignmentMonitorBase::beginRun(const edm::Run &iRun, const edm::EventSetup &iSetup) { runBegin(iRun, iSetup); }

void AlignmentMonitorBase::startingNewLoop() {
m_iteration++;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,9 @@ void AlignmentProducerBase::beginRunImpl(const edm::Run& run, const edm::EventSe
for (const auto& iCal : calibrations_)
iCal->beginRun(run, setup);

for (const auto& monitor : monitors_)
monitor->beginRun(run, setup);

//store the first run analyzed to be used for setting the IOV (for PCL)
if (firstRun_ > static_cast<cond::Time_t>(run.id().run())) {
firstRun_ = static_cast<cond::Time_t>(run.id().run());
Expand Down
84 changes: 84 additions & 0 deletions Alignment/MuonAlignmentAlgorithms/interface/CSCTTree.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#ifndef Alignment_MuonAlignmentAlgorithms_CSCTTree_H
#define Alignment_MuonAlignmentAlgorithms_CSCTTree_H

#include <string>
#include <RtypesCore.h>
#define BADVAL -999.0

typedef struct CSCLayerData {
UChar_t endcap;
UChar_t station;
UChar_t ring;
UChar_t chamber;

UInt_t nlayers;
UInt_t nDT;
UInt_t nCSC;
UInt_t nTracker;

Int_t charge;
Int_t nEvent;

Float_t pt;
Float_t pz;
Float_t eta;
Float_t phi;

Float_t v_hitx[6], v_hity[6];
Float_t v_resx[6], v_resy[6];

// not in ttree, but for other purposes
Bool_t doFill;
std::string cutType;

CSCLayerData() {
charge = 0;
endcap = 0;
station = 0;
ring = 0;
chamber = 0;
nlayers = 0;
nDT = 0;
nCSC = 0;
nTracker = 0;
pt = BADVAL;
pz = BADVAL;
eta = BADVAL;
phi = BADVAL;
doFill = false;
cutType = "";
for (int i = 0; i < 6; i++) {
v_hitx[i] = BADVAL;
v_hity[i] = BADVAL;
v_resx[i] = BADVAL;
v_resy[i] = BADVAL;
}
}

CSCLayerData& operator=(CSCLayerData x) {
charge = x.charge;
endcap = x.endcap;
ring = x.ring;
chamber = x.chamber;
nlayers = x.nlayers;
nDT = x.nDT;
nCSC = x.nCSC;
nTracker = x.nTracker;
pt = x.pt;
pz = x.pz;
eta = x.eta;
phi = x.phi;
doFill = x.doFill;
cutType = x.cutType;

for (int i = 0; i < 6; i++) {
v_hitx[i] = x.v_hitx[i];
v_hity[i] = x.v_hity[i];
v_resx[i] = x.v_resx[i];
v_resy[i] = x.v_resy[i];
}
return *this;
}
} CSCLayerData;

#endif
68 changes: 68 additions & 0 deletions Alignment/MuonAlignmentAlgorithms/interface/DTTTree.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#ifndef Alignment_MuonAlignmentAlgorithms_DTTTree_H
#define Alignment_MuonAlignmentAlgorithms_DTTTree_H

#include <string>
#include <RtypesCore.h>
#define BADVAL -999.0

typedef struct DTLayerData {
UChar_t wheel;
UChar_t station;
UChar_t sector;

UInt_t nlayers;
UInt_t nDT;
UInt_t nCSC;
UInt_t nTracker;

Int_t charge;
Int_t nEvent;

Float_t pt;
Float_t pz;
Float_t eta;
Float_t phi;

Float_t v_hitx[8], v_hity[4];
Float_t v_trackx[8], v_tracky[4], v_tracky_x_layer[8];

Bool_t doFill;
std::string cutType;

DTLayerData() {
charge = 0;
wheel = 0;
station = 0;
sector = 0;
nlayers = 0;
nDT = 0;
nCSC = 0;
nTracker = 0;
pt = BADVAL;
pz = BADVAL;
eta = BADVAL;
phi = BADVAL;
doFill = false;
cutType = "";
}

DTLayerData& operator=(DTLayerData x) {
charge = x.charge;
wheel = x.wheel;
station = x.station;
sector = x.sector;
nlayers = x.nlayers;
nDT = x.nDT;
nCSC = x.nCSC;
nTracker = x.nTracker;
pt = x.pt;
pz = x.pz;
eta = x.eta;
phi = x.phi;
doFill = x.doFill;
cutType = x.cutType;
return *this;
}
} DTLayerData;

#endif
Loading