Skip to content

Commit

Permalink
Merge pull request #40698 from mmusich/moreFillDescriptions
Browse files Browse the repository at this point in the history
Add more `fillDescriptions` to `Alignment/OfflineValidation` plugins
  • Loading branch information
cmsbuild authored Feb 7, 2023
2 parents 184e419 + c101a4e commit 4bbe756
Show file tree
Hide file tree
Showing 8 changed files with 150 additions and 102 deletions.
35 changes: 2 additions & 33 deletions Alignment/OfflineValidation/plugins/EopTreeWriter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -332,40 +332,9 @@ void EopTreeWriter::fillDescriptions(edm::ConfigurationDescriptions& description
desc.setComment("Generate tree for Tracker Alignment E/p validation");
desc.add<edm::InputTag>("src", edm::InputTag("generalTracks"));

// track association
// track association (take defaults)
edm::ParameterSetDescription psd0;
psd0.add<bool>("accountForTrajectoryChangeCalo", false);
psd0.add<bool>("propagateAllDirections", true);
psd0.add<bool>("truthMatch", false);
psd0.add<bool>("useCalo", false);
psd0.add<bool>("useEcal", true);
psd0.add<bool>("useGEM", false);
psd0.add<bool>("useHO", false);
psd0.add<bool>("useHcal", true);
psd0.add<bool>("useME0", false);
psd0.add<bool>("useMuon", true);
psd0.add<bool>("usePreshower", false);
psd0.add<double>("dREcal", 9999.0);
psd0.add<double>("dREcalPreselection", 0.05);
psd0.add<double>("dRHcal", 9999.0);
psd0.add<double>("dRHcalPreselection", 0.2);
psd0.add<double>("dRMuon", 9999.0);
psd0.add<double>("dRMuonPreselection", 0.2);
psd0.add<double>("dRPreshowerPreselection", 0.2);
psd0.add<double>("muonMaxDistanceSigmaX", 0.0);
psd0.add<double>("muonMaxDistanceSigmaY", 0.0);
psd0.add<double>("muonMaxDistanceX", 5.0);
psd0.add<double>("muonMaxDistanceY", 5.0);
psd0.add<double>("trajectoryUncertaintyTolerance", -1.0);
psd0.add<edm::InputTag>("CSCSegmentCollectionLabel", edm::InputTag("cscSegments"));
psd0.add<edm::InputTag>("CaloTowerCollectionLabel", edm::InputTag("towerMaker"));
psd0.add<edm::InputTag>("DTRecSegment4DCollectionLabel", edm::InputTag("dt4DSegments"));
psd0.add<edm::InputTag>("EBRecHitCollectionLabel", edm::InputTag("IsoProd", "IsoTrackEcalRecHitCollection"));
psd0.add<edm::InputTag>("EERecHitCollectionLabel", edm::InputTag("IsoProd", "IsoTrackEcalRecHitCollection"));
psd0.add<edm::InputTag>("GEMSegmentCollectionLabel", edm::InputTag("gemSegments"));
psd0.add<edm::InputTag>("HBHERecHitCollectionLabel", edm::InputTag("IsoProd", "IsoTrackHBHERecHitCollection"));
psd0.add<edm::InputTag>("HORecHitCollectionLabel", edm::InputTag("IsoProd", "IsoTrackHORecHitCollection"));
psd0.add<edm::InputTag>("ME0SegmentCollectionLabel", edm::InputTag("me0Segments"));
TrackAssociatorParameters::fillPSetDescription(psd0);
desc.add<edm::ParameterSetDescription>("TrackAssociatorParameters", psd0);

descriptions.addWithDefaultLabel(desc);
Expand Down
105 changes: 59 additions & 46 deletions Alignment/OfflineValidation/plugins/OverlapValidation.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,78 +17,73 @@

// system include files
#include <memory>
#include <vector>
#include <utility>

// user include files
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/one/EDAnalyzer.h"

#include "Alignment/TrackerAlignment/interface/TrackerAlignableId.h"
#include "CalibTracker/SiStripCommon/interface/SiStripDetInfoFileReader.h"
#include "CommonTools/Statistics/interface/ChiSquaredProbability.h"
#include "CommonTools/UtilAlgos/interface/TFileService.h"
#include "DataFormats/DetId/interface/DetId.h"
#include "DataFormats/GeometryVector/interface/GlobalPoint.h"
#include "DataFormats/GeometryVector/interface/LocalPoint.h"
#include "DataFormats/SiPixelDetId/interface/PXBDetId.h"
#include "DataFormats/SiPixelDetId/interface/PXFDetId.h"
#include "DataFormats/SiStripDetId/interface/SiStripDetId.h"
#include "DataFormats/SiStripDetId/interface/StripSubdetector.h"
#include "DataFormats/TrackReco/interface/Track.h"
#include "DataFormats/TrackReco/interface/TrackExtra.h"
#include "DataFormats/TrackReco/interface/TrackExtraFwd.h"
#include "DataFormats/TrackReco/interface/TrackFwd.h"
#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "FWCore/Framework/interface/one/EDAnalyzer.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/ParameterSet/interface/FileInPath.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "FWCore/Utilities/interface/EDGetToken.h"
#include "FWCore/Utilities/interface/ESGetToken.h"

#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
#include "Geometry/CommonDetUnit/interface/GeomDet.h"
#include "Geometry/CommonDetUnit/interface/GeomDetType.h"
#include "Geometry/CommonDetUnit/interface/GluedGeomDet.h"
#include "Geometry/CommonDetUnit/interface/PixelGeomDetType.h"
#include "Geometry/CommonDetUnit/interface/PixelGeomDetUnit.h"
#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
#include "Geometry/TrackerGeometryBuilder/interface/RectangularPixelTopology.h"
#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
#include "MagneticField/Engine/interface/MagneticField.h"
#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "CommonTools/UtilAlgos/interface/TFileService.h"

#include "CommonTools/Statistics/interface/ChiSquaredProbability.h"
#include "FWCore/ParameterSet/interface/FileInPath.h"
#include "CalibTracker/SiStripCommon/interface/SiStripDetInfoFileReader.h"

#include "Geometry/CommonDetUnit/interface/PixelGeomDetUnit.h"
#include "Geometry/CommonDetUnit/interface/PixelGeomDetType.h"
#include "Geometry/CommonDetUnit/interface/GeomDetType.h"
#include "Geometry/CommonDetUnit/interface/GeomDet.h"
#include "Geometry/TrackerGeometryBuilder/interface/RectangularPixelTopology.h"

#include "DataFormats/TrackReco/interface/TrackFwd.h"
#include "DataFormats/TrackReco/interface/Track.h"
#include "DataFormats/TrackReco/interface/TrackExtra.h"
#include "DataFormats/TrackReco/interface/TrackExtraFwd.h"
#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
#include "DataFormats/SiStripDetId/interface/StripSubdetector.h"
#include "DataFormats/DetId/interface/DetId.h"
#include "DataFormats/SiPixelDetId/interface/PXBDetId.h"
#include "DataFormats/SiPixelDetId/interface/PXFDetId.h"
#include "Geometry/CommonDetUnit/interface/GeomDet.h"
#include "Geometry/CommonDetUnit/interface/GluedGeomDet.h"
#include "TrackingTools/PatternTools/interface/Trajectory.h"
#include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h"
#include "RecoTracker/TransientTrackingRecHit/interface/TSiStripMatchedRecHit.h"
#include "RecoTracker/TransientTrackingRecHit/interface/ProjectedRecHit2D.h"
#include "RecoTracker/TransientTrackingRecHit/interface/TSiStripMatchedRecHit.h"
#include "SimDataFormats/TrackingHit/interface/PSimHit.h"
#include "SimTracker/TrackerHitAssociation/interface/TrackerHitAssociator.h"

#include "TrackingTools/GeomPropagators/interface/AnalyticalPropagator.h"
#include "TrackingTools/AnalyticalJacobians/interface/JacobianLocalToCurvilinear.h"
#include "TrackingTools/AnalyticalJacobians/interface/JacobianCurvilinearToLocal.h"
#include "TrackingTools/AnalyticalJacobians/interface/AnalyticalCurvilinearJacobian.h"
#include "TrackingTools/AnalyticalJacobians/interface/JacobianCurvilinearToLocal.h"
#include "TrackingTools/AnalyticalJacobians/interface/JacobianLocalToCurvilinear.h"
#include "TrackingTools/GeomPropagators/interface/AnalyticalPropagator.h"
#include "TrackingTools/PatternTools/interface/Trajectory.h"
#include "TrackingTools/TrackFitters/interface/TrajectoryStateCombiner.h"
#include "DataFormats/GeometryVector/interface/LocalPoint.h"
#include "DataFormats/GeometryVector/interface/GlobalPoint.h"
#include "DataFormats/SiStripDetId/interface/SiStripDetId.h"
#include "Alignment/TrackerAlignment/interface/TrackerAlignableId.h"
#include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h"

// ROOT includes
#include "TFile.h"
#include "TTree.h"

#include <vector>
#include <utility>

using namespace std;
//
// class decleration
//

class OverlapValidation : public edm::one::EDAnalyzer<> {
class OverlapValidation : public edm::one::EDAnalyzer<edm::one::SharedResources> {
public:
explicit OverlapValidation(const edm::ParameterSet&);
~OverlapValidation() override;
static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);

private:
typedef vector<Trajectory> TrajectoryCollection;
Expand Down Expand Up @@ -200,6 +195,7 @@ OverlapValidation::OverlapValidation(const edm::ParameterSet& iConfig)
addExtraBranches_(false),
minHitsCut_(6),
chi2ProbCut_(0.001) {
usesResource(TFileService::kSharedResource);
edm::ConsumesCollector&& iC = consumesCollector();
//now do what ever initialization is needed
trajectoryTag_ = iConfig.getParameter<edm::InputTag>("trajectories");
Expand Down Expand Up @@ -274,11 +270,28 @@ OverlapValidation::OverlapValidation(const edm::ParameterSet& iConfig)
rootTree_->Branch("localydotglobaly", localydotglobaly_, "localydotglobaly[2]/F");
}

// ------------ method fills 'descriptions' with the allowed parameters for the module ------------
void OverlapValidation::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
edm::ParameterSetDescription desc;
desc.setComment("Overlap Validation analyzer plugin.");
TrackerHitAssociator::fillPSetDescription(desc);
//desc.add<bool>("associateStrip",false); // NB this comes from the fillPSetDescription
desc.addUntracked<int>("compressionSettings", -1);
desc.add<edm::InputTag>("trajectories", edm::InputTag("FinalTrackRefitter"));
desc.add<bool>("barrelOnly", false);
desc.add<bool>("usePXB", true);
desc.add<bool>("usePXF", true);
desc.add<bool>("useTIB", true);
desc.add<bool>("useTOB", true);
desc.add<bool>("useTID", true);
desc.add<bool>("useTEC", true);
descriptions.addWithDefaultLabel(desc);
}

OverlapValidation::~OverlapValidation() {
edm::LogWarning w("Overlaps");
// do anything here that needs to be done at desctruction time
// (e.g. close files, deallocate resources etc.)

w << "Counters =";
w << " Number of tracks: " << overlapCounts_[0];
w << " Number of valid hits: " << overlapCounts_[1];
Expand Down
5 changes: 3 additions & 2 deletions Alignment/OfflineValidation/python/eopTreeWriter_cfi.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import FWCore.ParameterSet.Config as cms

energyOverMomentumTree = cms.EDAnalyzer('EOP',
src = cms.InputTag('TrackRefitter')
from Alignment.OfflineValidation.eopTreeWriter_cfi import eopTreeWriter as _eopTreeWriter
energyOverMomentumTree = _eopTreeWriter.clone(
src = 'TrackRefitter'
)
7 changes: 7 additions & 0 deletions Alignment/OfflineValidation/test/eopTreeWriter_cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,13 @@
####################################################################
# configure tree writer
####################################################################

# uncomment following block in case it is run over the HcalCalIsoTrk AlCaReco
# TrackAssociatorParameterBlock.TrackAssociatorParameters.EBRecHitCollectionLabel = cms.InputTag("IsoProd", "IsoTrackEcalRecHitCollection")
# TrackAssociatorParameterBlock.TrackAssociatorParameters.EERecHitCollectionLabel = cms.InputTag("IsoProd", "IsoTrackEcalRecHitCollection")
# TrackAssociatorParameterBlock.TrackAssociatorParameters.HBHERecHitCollectionLabel = cms.InputTag("IsoProd", "IsoTrackHBHERecHitCollection")
# TrackAssociatorParameterBlock.TrackAssociatorParameters.HORecHitCollectionLabel = cms.InputTag("IsoProd", "IsoTrackHORecHitCollection")

TrackAssociatorParameterBlock.TrackAssociatorParameters.EERecHitCollectionLabel = cms.InputTag("ecalRecHit","EcalRecHitsEE")
TrackAssociatorParameterBlock.TrackAssociatorParameters.EBRecHitCollectionLabel = cms.InputTag("ecalRecHit","EcalRecHitsEB")
TrackAssociatorParameterBlock.TrackAssociatorParameters.HBHERecHitCollectionLabel = cms.InputTag("hbhereco")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ class TrackerHitAssociator {
// Destructor
virtual ~TrackerHitAssociator() {}

static void fillPSetDescription(edm::ParameterSetDescription& descriptions);

typedef std::pair<unsigned int, unsigned int> simhitAddr, subDetTofBin;
typedef unsigned int simHitCollectionID;

Expand Down
53 changes: 33 additions & 20 deletions SimTracker/TrackerHitAssociation/src/TrackerHitAssociator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@ TrackerHitAssociator::Config::Config(edm::ConsumesCollector&& iC)
: doPixel_(true), doStrip_(true), useOTph2_(false), doTrackAssoc_(false), assocHitbySimTrack_(false) {
if (doStrip_) {
if (useOTph2_)
ph2OTrToken_ = iC.consumes<edm::DetSetVector<PixelDigiSimLink> >(edm::InputTag("simSiPixelDigis", "Tracker"));
ph2OTrToken_ = iC.consumes<edm::DetSetVector<PixelDigiSimLink>>(edm::InputTag("simSiPixelDigis", "Tracker"));
else
stripToken_ = iC.consumes<edm::DetSetVector<StripDigiSimLink> >(edm::InputTag("simSiStripDigis"));
stripToken_ = iC.consumes<edm::DetSetVector<StripDigiSimLink>>(edm::InputTag("simSiStripDigis"));
}
if (doPixel_) {
if (useOTph2_)
pixelToken_ = iC.consumes<edm::DetSetVector<PixelDigiSimLink> >(edm::InputTag("simSiPixelDigis", "Pixel"));
pixelToken_ = iC.consumes<edm::DetSetVector<PixelDigiSimLink>>(edm::InputTag("simSiPixelDigis", "Pixel"));
else
pixelToken_ = iC.consumes<edm::DetSetVector<PixelDigiSimLink> >(edm::InputTag("simSiPixelDigis"));
pixelToken_ = iC.consumes<edm::DetSetVector<PixelDigiSimLink>>(edm::InputTag("simSiPixelDigis"));
}
if (!doTrackAssoc_) {
std::vector<std::string> trackerContainers;
Expand All @@ -58,8 +58,8 @@ TrackerHitAssociator::Config::Config(edm::ConsumesCollector&& iC)
cfTokens_.reserve(trackerContainers.size());
simHitTokens_.reserve(trackerContainers.size());
for (auto const& trackerContainer : trackerContainers) {
cfTokens_.push_back(iC.consumes<CrossingFrame<PSimHit> >(edm::InputTag("mix", trackerContainer)));
simHitTokens_.push_back(iC.consumes<std::vector<PSimHit> >(edm::InputTag("g4SimHits", trackerContainer)));
cfTokens_.push_back(iC.consumes<CrossingFrame<PSimHit>>(edm::InputTag("mix", trackerContainer)));
simHitTokens_.push_back(iC.consumes<std::vector<PSimHit>>(edm::InputTag("g4SimHits", trackerContainer)));
}
}
}
Expand All @@ -77,26 +77,39 @@ TrackerHitAssociator::Config::Config(const edm::ParameterSet& conf, edm::Consume
conf.existsAs<bool>("associateHitbySimTrack") ? conf.getParameter<bool>("associateHitbySimTrack") : false) {
if (doStrip_) {
if (useOTph2_)
ph2OTrToken_ = iC.consumes<edm::DetSetVector<PixelDigiSimLink> >(
conf.getParameter<edm::InputTag>("phase2TrackerSimLinkSrc"));
ph2OTrToken_ =
iC.consumes<edm::DetSetVector<PixelDigiSimLink>>(conf.getParameter<edm::InputTag>("phase2TrackerSimLinkSrc"));
else
stripToken_ =
iC.consumes<edm::DetSetVector<StripDigiSimLink> >(conf.getParameter<edm::InputTag>("stripSimLinkSrc"));
iC.consumes<edm::DetSetVector<StripDigiSimLink>>(conf.getParameter<edm::InputTag>("stripSimLinkSrc"));
}
if (doPixel_)
pixelToken_ =
iC.consumes<edm::DetSetVector<PixelDigiSimLink> >(conf.getParameter<edm::InputTag>("pixelSimLinkSrc"));
pixelToken_ = iC.consumes<edm::DetSetVector<PixelDigiSimLink>>(conf.getParameter<edm::InputTag>("pixelSimLinkSrc"));
if (!doTrackAssoc_) {
std::vector<std::string> trackerContainers(conf.getParameter<std::vector<std::string> >("ROUList"));
std::vector<std::string> trackerContainers(conf.getParameter<std::vector<std::string>>("ROUList"));
cfTokens_.reserve(trackerContainers.size());
simHitTokens_.reserve(trackerContainers.size());
for (auto const& trackerContainer : trackerContainers) {
cfTokens_.push_back(iC.consumes<CrossingFrame<PSimHit> >(edm::InputTag("mix", trackerContainer)));
simHitTokens_.push_back(iC.consumes<std::vector<PSimHit> >(edm::InputTag("g4SimHits", trackerContainer)));
cfTokens_.push_back(iC.consumes<CrossingFrame<PSimHit>>(edm::InputTag("mix", trackerContainer)));
simHitTokens_.push_back(iC.consumes<std::vector<PSimHit>>(edm::InputTag("g4SimHits", trackerContainer)));
}
}
}

void TrackerHitAssociator::fillPSetDescription(edm::ParameterSetDescription& desc) {
desc.setComment("auxilliary class to store information about recHit/simHit association");
desc.add<bool>("associatePixel", false);
desc.add<bool>("associateStrip", false);
desc.add<bool>("usePhase2Tracker", false);
desc.add<bool>("associateRecoTracks", false);
desc.add<bool>("associateHitbySimTrack", false);
desc.add<edm::InputTag>("phase2TrackerSimLinkSrc", edm::InputTag("simSiPixelDigis", "Tracker"));
desc.add<edm::InputTag>("stripSimLinkSrc", edm::InputTag("simSiStripDigis"));
desc.add<edm::InputTag>("pixelSimLinkSrc", edm::InputTag("simSiPixelDigis"));
desc.add<std::vector<std::string>>(
"ROUList", {"TrackerHitsTIBLowTof", "TrackerHitsTIBHighTof", "TrackerHitsTOBLowTof", "TrackerHitsTOBHighTof"});
}

//
// Constructor supporting consumes interface
//
Expand Down Expand Up @@ -128,10 +141,10 @@ void TrackerHitAssociator::makeMaps(const edm::Event& theEvent, const TrackerHit
// or just PSimHits (e.g., g4SimHits/TrackerHitsTIBLowTof)
if (assocHitbySimTrack_) {
for (auto const& cfToken : config.cfTokens_) {
edm::Handle<CrossingFrame<PSimHit> > cf_simhit;
edm::Handle<CrossingFrame<PSimHit>> cf_simhit;
int Nhits = 0;
if (theEvent.getByToken(cfToken, cf_simhit)) {
std::unique_ptr<MixCollection<PSimHit> > thisContainerHits(new MixCollection<PSimHit>(cf_simhit.product()));
std::unique_ptr<MixCollection<PSimHit>> thisContainerHits(new MixCollection<PSimHit>(cf_simhit.product()));
for (auto const& isim : *thisContainerHits) {
DetId theDet(isim.detUnitId());
SimHitMap[theDet].push_back(isim);
Expand All @@ -142,7 +155,7 @@ void TrackerHitAssociator::makeMaps(const edm::Event& theEvent, const TrackerHit
}
}
for (auto const& simHitToken : config.simHitTokens_) {
edm::Handle<std::vector<PSimHit> > simHits;
edm::Handle<std::vector<PSimHit>> simHits;
int Nhits = 0;
if (theEvent.getByToken(simHitToken, simHits)) {
for (auto const& isim : *simHits) {
Expand All @@ -162,10 +175,10 @@ void TrackerHitAssociator::makeMaps(const edm::Event& theEvent, const TrackerHit
unsigned int collectionIndex = 0;
for (auto const& cfToken : config.cfTokens_) {
collectionIndex++;
edm::Handle<CrossingFrame<PSimHit> > cf_simhit;
edm::Handle<CrossingFrame<PSimHit>> cf_simhit;
int Nhits = 0;
if (theEvent.getByToken(cfToken, cf_simhit)) {
std::unique_ptr<MixCollection<PSimHit> > thisContainerHits(new MixCollection<PSimHit>(cf_simhit.product()));
std::unique_ptr<MixCollection<PSimHit>> thisContainerHits(new MixCollection<PSimHit>(cf_simhit.product()));
theEvent.labelsForToken(cfToken, labels);
if (std::strstr(labels.productInstance, highTag) != nullptr) {
tofBin = StripDigiSimLink::HighTof;
Expand All @@ -186,7 +199,7 @@ void TrackerHitAssociator::makeMaps(const edm::Event& theEvent, const TrackerHit
collectionIndex = 0;
for (auto const& simHitToken : config.simHitTokens_) {
collectionIndex++;
edm::Handle<std::vector<PSimHit> > simHits;
edm::Handle<std::vector<PSimHit>> simHits;
int Nhits = 0;
if (theEvent.getByToken(simHitToken, simHits)) {
theEvent.labelsForToken(simHitToken, labels);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,18 @@ class GlobalTrackingGeometryRecord;
class MagneticField;
class IdealMagneticFieldRecord;

namespace edm {
class ParameterSetDescription;
}

class TrackAssociatorParameters {
public:
TrackAssociatorParameters() {}
TrackAssociatorParameters(const edm::ParameterSet&, edm::ConsumesCollector&&);
void loadParameters(const edm::ParameterSet&, edm::ConsumesCollector&);

static void fillPSetDescription(edm::ParameterSetDescription& descriptions);

double dREcal;
double dRHcal;
double dRMuon;
Expand Down
Loading

0 comments on commit 4bbe756

Please sign in to comment.