Skip to content

Commit

Permalink
Merge pull request #13404 from schneiml/dqm-tracker-residuals-improve…
Browse files Browse the repository at this point in the history
…ments

DQM TrackerMonitorTrack improvements (80X version)
  • Loading branch information
cmsbuild committed Mar 17, 2016
2 parents 7315223 + 3fccd1a commit 5437ff7
Show file tree
Hide file tree
Showing 11 changed files with 203 additions and 176 deletions.
Expand Up @@ -81,10 +81,12 @@ class TrackerValidationVariables
void fillTrackQuantities(const edm::Event&,
const edm::EventSetup&,
std::vector<AVTrackStruct> & v_avtrackout);

// need the following method for MonitorTrackResiduals in DQM/TrackerMonitorTrack
void fillHitQuantities(const edm::Event&, std::vector<AVHitStruct> & v_avhitout);

// all Tracks are passed to the trackFilter first, and only processed if it returns true.
void fillTrackQuantities(const edm::Event& event,
const edm::EventSetup& eventSetup,
std::function<bool(const reco::Track&)> trackFilter,
std::vector<AVTrackStruct> & v_avtrackout);

private:

edm::EDGetTokenT<std::vector<Trajectory> > trajCollectionToken_;
Expand Down
29 changes: 14 additions & 15 deletions Alignment/OfflineValidation/src/TrackerValidationVariables.cc
Expand Up @@ -309,6 +309,18 @@ void
TrackerValidationVariables::fillTrackQuantities(const edm::Event& event,
const edm::EventSetup& eventSetup,
std::vector<AVTrackStruct> & v_avtrackout)
{
fillTrackQuantities(event,
eventSetup,
[](const reco::Track&) -> bool { return true; },
v_avtrackout);
}

void
TrackerValidationVariables::fillTrackQuantities(const edm::Event& event,
const edm::EventSetup& eventSetup,
std::function<bool(const reco::Track&)> trackFilter,
std::vector<AVTrackStruct> & v_avtrackout)
{
edm::ESHandle<MagneticField> magneticField;
eventSetup.get<IdealMagneticFieldRecord>().get(magneticField);
Expand All @@ -327,6 +339,8 @@ TrackerValidationVariables::fillTrackQuantities(const edm::Event& event,
trajectory = &(*(*iPair).key);
track = &(*(*iPair).val);

if (!trackFilter(*track)) continue;

AVTrackStruct trackStruct;

trackStruct.p = track->p();
Expand Down Expand Up @@ -355,18 +369,3 @@ TrackerValidationVariables::fillTrackQuantities(const edm::Event& event,
}
}

void
TrackerValidationVariables::fillHitQuantities(const edm::Event& event, std::vector<AVHitStruct> & v_avhitout)
{
edm::Handle<std::vector<Trajectory> > trajCollectionHandle;
event.getByToken(trajCollectionToken_, trajCollectionHandle);

LogDebug("TrackerValidationVariables") << "trajColl->size(): " << trajCollectionHandle->size() ;

for (std::vector<Trajectory>::const_iterator it = trajCollectionHandle->begin(), itEnd = trajCollectionHandle->end();
it!=itEnd;
++it) {

fillHitQuantities(&(*it), v_avhitout);
}
}
3 changes: 2 additions & 1 deletion DQM/SiPixelCommon/python/SiPixelOfflineDQM_source_cff.py
Expand Up @@ -31,6 +31,7 @@
from DQM.SiPixelMonitorTrack.SiPixelMonitorEfficiency_cfi import *
SiPixelHitEfficiencySource.saveFile = False
SiPixelHitEfficiencySource.trajectoryInput = cms.InputTag('generalTracks')
from DQM.TrackerMonitorTrack.SiPixelMonitorTrackResiduals_cfi import *

##online/offline
#RawDataErrors
Expand Down Expand Up @@ -141,7 +142,7 @@
#FED integrity
from DQM.SiPixelMonitorRawData.SiPixelMonitorHLT_cfi import *

siPixelOfflineDQM_source = cms.Sequence(SiPixelHLTSource + SiPixelRawDataErrorSource + SiPixelDigiSource + SiPixelRecHitSource + SiPixelClusterSource + SiPixelTrackResidualSource + SiPixelHitEfficiencySource + dqmInfo)
siPixelOfflineDQM_source = cms.Sequence(SiPixelHLTSource + SiPixelRawDataErrorSource + SiPixelDigiSource + SiPixelRecHitSource + SiPixelClusterSource + SiPixelTrackResidualSource + SiPixelHitEfficiencySource + SiPixelMonitorTrackResiduals + dqmInfo)

siPixelOfflineDQM_cosmics_source = cms.Sequence(SiPixelHLTSource + SiPixelRawDataErrorSource + SiPixelDigiSource + SiPixelRecHitSource + SiPixelClusterSource + SiPixelTrackResidualSource_Cosmics + dqmInfo)

Expand Down
3 changes: 2 additions & 1 deletion DQM/SiPixelCommon/python/SiPixelP5DQM_source_cff.py
Expand Up @@ -39,6 +39,7 @@
from DQM.SiPixelMonitorTrack.SiPixelMonitorEfficiency_cfi import *
SiPixelHitEfficiencySource.saveFile = False
SiPixelHitEfficiencySource.trajectoryInput = cms.InputTag('generalTracks')
from DQM.TrackerMonitorTrack.SiPixelMonitorTrackResiduals_cfi import *

##online/offline
#RawDataErrors
Expand Down Expand Up @@ -125,7 +126,7 @@
from DQM.SiPixelMonitorRawData.SiPixelMonitorHLT_cfi import *
SiPixelHLTSource.DirName = cms.untracked.string('Pixel/FEDIntegrity/')

siPixelP5DQM_source = cms.Sequence(SiPixelRawDataErrorSource + SiPixelDigiSource + SiPixelRecHitSource + SiPixelClusterSource + SiPixelTrackResidualSource + SiPixelHitEfficiencySource + dqmInfo)
siPixelP5DQM_source = cms.Sequence(SiPixelRawDataErrorSource + SiPixelDigiSource + SiPixelRecHitSource + SiPixelClusterSource + SiPixelTrackResidualSource + SiPixelHitEfficiencySource + SiPixelMonitorTrackResiduals + dqmInfo)

siPixelP5DQM_cosmics_source = cms.Sequence(SiPixelRawDataErrorSource + SiPixelDigiSource + SiPixelRecHitSource + SiPixelClusterSource + SiPixelTrackResidualSource_Cosmics + dqmInfo)

Expand Down
Expand Up @@ -82,15 +82,18 @@
import DQM.TrackerMonitorTrack.MonitorTrackResiduals_cfi
MonitorTrackResiduals_cosmicTk = DQM.TrackerMonitorTrack.MonitorTrackResiduals_cfi.MonitorTrackResiduals.clone()
MonitorTrackResiduals_cosmicTk.trajectoryInput = 'cosmictrackfinderP5'
MonitorTrackResiduals_cosmicTk.Tracks = 'cosmictrackfinderP5'
MonitorTrackResiduals_cosmicTk.Mod_On = False
# Clone for CKF Tracks
MonitorTrackResiduals_ckf = DQM.TrackerMonitorTrack.MonitorTrackResiduals_cfi.MonitorTrackResiduals.clone()
MonitorTrackResiduals_ckf.trajectoryInput = 'ctfWithMaterialTracksP5'
MonitorTrackResiduals_ckf.Tracks = 'ctfWithMaterialTracksP5'
MonitorTrackResiduals_ckf.Mod_On = False
# Clone for Road Search Tracks
#import DQM.TrackerMonitorTrack.MonitorTrackResiduals_cfi
#MonitorTrackResiduals_rs = DQM.TrackerMonitorTrack.MonitorTrackResiduals_cfi.MonitorTrackResiduals.clone()
#MonitorTrackResiduals_rs.trajectoryInput = 'rsWithMaterialTracksP5'
#MonitorTrackResiduals_rs.Tracks = 'rsWithMaterialTracksP5'
#MonitorTrackResiduals_rs.Mod_On = False

# TrackingMonitor ####
Expand Down
Expand Up @@ -94,6 +94,7 @@
### TrackerMonitorTrack defined and used only for MinimumBias ####
from DQM.TrackerMonitorTrack.MonitorTrackResiduals_cfi import *
MonitorTrackResiduals.trajectoryInput = 'generalTracks'
MonitorTrackResiduals.Tracks = 'generalTracks'
MonitorTrackResiduals.Mod_On = False
MonitorTrackResiduals.andOr = cms.bool( False )
MonitorTrackResiduals.dbLabel = cms.string("SiStripDQMTrigger")
Expand Down
107 changes: 38 additions & 69 deletions DQM/TrackerMonitorTrack/README.md
@@ -1,94 +1,63 @@
### Purpose

This code generates the `HitResiduals` and `NormalizedHitResiduals` histograms.
This code generates the `HitResiduals` and `NormalizedHitResiduals` histograms for SiStip and SiPixel. The source file `MonitorTrackResiduals.cc` actually implements two modules (using a template parameter) from the same code, such that the SiStrip and SiPixel configurations can be handled independently. The disadvantage of this is that every track has to be handled twice (which might hurt performance).

### Data displayed

The data shown in the histograms is computed by the Alignment/OfflineValidation code. It is computed for SiPixel and SiStrip in x- and y-direction (resXprime, resYprime values), however for the strips only the x-residual is relevant.
The data shown in the histograms is computed by the Alignment/OfflineValidation code. It is computed for SiPixel and SiStrip in x- and y-direction (resXprime, resYprime values), however for the strips only the x-residual is relevant. Simple cuts on pT and the significance of dxy are applied to only select good tracks. Additionally, a trigger can be applied.

### Options

* `MonitorTrackResiduals.Mod_On` setting this to `True` will generate plots for every module. By default, only one plot per layer and wheel/disk is generated.
`MonitorTrackResiduals` (for SiStrip) and `SiPixelMonitorTrackResiduals` (for SiPixel) accept the same options.

### Bugs

* The plots for pixel disks appear hidden in the shell and half cylinder folders, even though they cover the full layer/disk.
* `Mod_On` setting this to `True` will generate plots for every module. By default, only one plot per layer and wheel/disk is generated.
* `Tracks` the sort of tracks to be used. (Note that `TrackerValidationVariables.cc` uses `trajcetoryInput` as well, but this should not affect this module.)
* The usual parameters of `GenericTriggerEventFlag`.

### Currently generated histograms

* `Pixel/Barrel/Shell_mI/Layer_1/HitResiduals_BPIX__Layer__1`
* `Pixel/Barrel/Shell_mI/Layer_1/HitResiduals_BPIX__Layer__1_Y`
* `Pixel/Barrel/Shell_mI/Layer_2/HitResiduals_BPIX__Layer__2`
* `Pixel/Barrel/Shell_mI/Layer_2/HitResiduals_BPIX__Layer__2_Y`
* `Pixel/Barrel/Shell_mI/Layer_3/HitResiduals_BPIX__Layer__3`
* `Pixel/Barrel/Shell_mI/Layer_3/HitResiduals_BPIX__Layer__3_Y`
* `Pixel/Endcap/HalfCylinder_pI/Disk_1/HitResiduals_FPIX__wheel__1`
* `Pixel/Endcap/HalfCylinder_pI/Disk_1/HitResiduals_FPIX__wheel__1_Y`
* `Pixel/Endcap/HalfCylinder_pI/Disk_2/HitResiduals_FPIX__wheel__2`
* `Pixel/Endcap/HalfCylinder_pI/Disk_2/HitResiduals_FPIX__wheel__2_Y`
* `Pixel/Endcap/HalfCylinder_mI/Disk_1/HitResiduals_FPIX__wheel__1`
* `Pixel/Endcap/HalfCylinder_mI/Disk_1/HitResiduals_FPIX__wheel__1_Y`
* `Pixel/Endcap/HalfCylinder_mI/Disk_2/HitResiduals_FPIX__wheel__2`
* `Pixel/Endcap/HalfCylinder_mI/Disk_2/HitResiduals_FPIX__wheel__2_Y`
* `Pixel/Barrel/HitResidualsX_L1`
* `Pixel/Barrel/HitResidualsX_L2`
* `Pixel/Barrel/HitResidualsX_L3`
* `Pixel/Barrel/HitResidualsY_L1`
* `Pixel/Barrel/HitResidualsY_L2`
* `Pixel/Barrel/HitResidualsY_L3`
* `Pixel/Endcap/HitResidualsX_Dm1`
* `Pixel/Endcap/HitResidualsX_Dm2`
* `Pixel/Endcap/HitResidualsX_Dp1`
* `Pixel/Endcap/HitResidualsX_Dp2`
* `Pixel/Endcap/HitResidualsY_Dm1`
* `Pixel/Endcap/HitResidualsY_Dm2`
* `Pixel/Endcap/HitResidualsY_Dp1`
* `Pixel/Endcap/HitResidualsY_Dp2`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_1/HitResiduals_TEC__wheel__1`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_2/HitResiduals_TEC__wheel__2`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_3/HitResiduals_TEC__wheel__3`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_4/HitResiduals_TEC__wheel__4`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_5/HitResiduals_TEC__wheel__5`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_6/HitResiduals_TEC__wheel__6`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_7/HitResiduals_TEC__wheel__7`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_8/HitResiduals_TEC__wheel__8`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_9/HitResiduals_TEC__wheel__9`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_1/HitResiduals_TEC__wheel__1`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_2/HitResiduals_TEC__wheel__2`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_3/HitResiduals_TEC__wheel__3`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_4/HitResiduals_TEC__wheel__4`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_5/HitResiduals_TEC__wheel__5`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_6/HitResiduals_TEC__wheel__6`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_7/HitResiduals_TEC__wheel__7`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_8/HitResiduals_TEC__wheel__8`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_9/HitResiduals_TEC__wheel__9`
* `SiStrip/MechanicalView/TIB/layer_1/HitResiduals_TIB__Layer__1`
* `SiStrip/MechanicalView/TIB/layer_1/HitResiduals_TIB__Layer__1_Y`
* `SiStrip/MechanicalView/TIB/layer_2/HitResiduals_TIB__Layer__2`
* `SiStrip/MechanicalView/TIB/layer_2/HitResiduals_TIB__Layer__2_Y`
* `SiStrip/MechanicalView/TIB/layer_3/HitResiduals_TIB__Layer__3`
* `SiStrip/MechanicalView/TIB/layer_3/HitResiduals_TIB__Layer__3_Y`
* `SiStrip/MechanicalView/TIB/layer_4/HitResiduals_TIB__Layer__4`
* `SiStrip/MechanicalView/TIB/layer_4/HitResiduals_TIB__Layer__4_Y`
* `SiStrip/MechanicalView/TID/PLUS/wheel_1/HitResiduals_TID__wheel__1`
* `SiStrip/MechanicalView/TID/PLUS/wheel_1/HitResiduals_TID__wheel__1_Y`
* `SiStrip/MechanicalView/TID/PLUS/wheel_2/HitResiduals_TID__wheel__2`
* `SiStrip/MechanicalView/TID/PLUS/wheel_2/HitResiduals_TID__wheel__2_Y`
* `SiStrip/MechanicalView/TID/PLUS/wheel_3/HitResiduals_TID__wheel__3`
* `SiStrip/MechanicalView/TID/PLUS/wheel_3/HitResiduals_TID__wheel__3_Y`
* `SiStrip/MechanicalView/TOB/layer_1/HitResiduals_TOB__Layer__1`
* `SiStrip/MechanicalView/TOB/layer_1/HitResiduals_TOB__Layer__1_Y`
* `SiStrip/MechanicalView/TOB/layer_2/HitResiduals_TOB__Layer__2`
* `SiStrip/MechanicalView/TOB/layer_2/HitResiduals_TOB__Layer__2_Y`
* `SiStrip/MechanicalView/TOB/layer_3/HitResiduals_TOB__Layer__3`
* `SiStrip/MechanicalView/TOB/layer_3/HitResiduals_TOB__Layer__3_Y`
* `SiStrip/MechanicalView/TOB/layer_4/HitResiduals_TOB__Layer__4`
* `SiStrip/MechanicalView/TOB/layer_4/HitResiduals_TOB__Layer__4_Y`
* `SiStrip/MechanicalView/TOB/layer_5/HitResiduals_TOB__Layer__5`
* `SiStrip/MechanicalView/TOB/layer_5/HitResiduals_TOB__Layer__5_Y`
* `SiStrip/MechanicalView/TOB/layer_6/HitResiduals_TOB__Layer__6`
* `SiStrip/MechanicalView/TOB/layer_6/HitResiduals_TOB__Layer__6_Y`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_1/HitResiduals_TEC__wheel__1`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_1/HitResiduals_TEC__wheel__1_Y`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_2/HitResiduals_TEC__wheel__2`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_2/HitResiduals_TEC__wheel__2_Y`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_3/HitResiduals_TEC__wheel__3`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_3/HitResiduals_TEC__wheel__3_Y`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_4/HitResiduals_TEC__wheel__4`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_4/HitResiduals_TEC__wheel__4_Y`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_5/HitResiduals_TEC__wheel__5`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_5/HitResiduals_TEC__wheel__5_Y`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_6/HitResiduals_TEC__wheel__6`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_6/HitResiduals_TEC__wheel__6_Y`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_7/HitResiduals_TEC__wheel__7`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_7/HitResiduals_TEC__wheel__7_Y`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_8/HitResiduals_TEC__wheel__8`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_8/HitResiduals_TEC__wheel__8_Y`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_9/HitResiduals_TEC__wheel__9`
* `SiStrip/MechanicalView/TEC/PLUS/wheel_9/HitResiduals_TEC__wheel__9_Y`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_1/HitResiduals_TEC__wheel__1`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_1/HitResiduals_TEC__wheel__1_Y`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_2/HitResiduals_TEC__wheel__2`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_2/HitResiduals_TEC__wheel__2_Y`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_3/HitResiduals_TEC__wheel__3`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_3/HitResiduals_TEC__wheel__3_Y`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_4/HitResiduals_TEC__wheel__4`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_4/HitResiduals_TEC__wheel__4_Y`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_5/HitResiduals_TEC__wheel__5`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_5/HitResiduals_TEC__wheel__5_Y`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_6/HitResiduals_TEC__wheel__6`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_6/HitResiduals_TEC__wheel__6_Y`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_7/HitResiduals_TEC__wheel__7`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_7/HitResiduals_TEC__wheel__7_Y`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_8/HitResiduals_TEC__wheel__8`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_8/HitResiduals_TEC__wheel__8_Y`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_9/HitResiduals_TEC__wheel__9`
* `SiStrip/MechanicalView/TEC/MINUS/wheel_9/HitResiduals_TEC__wheel__9_Y`
33 changes: 21 additions & 12 deletions DQM/TrackerMonitorTrack/interface/MonitorTrackResiduals.h
Expand Up @@ -22,31 +22,30 @@ Monitoring source for track residuals on each detector module
#include "FWCore/Framework/interface/Run.h"
#include <DQMServices/Core/interface/DQMEDAnalyzer.h>
#include "Alignment/OfflineValidation/interface/TrackerValidationVariables.h"
#include "DataFormats/VertexReco/interface/VertexFwd.h"

class MonitorElement;
class DQMStore;
class GenericTriggerEventFlag;
namespace edm { class Event; }

class MonitorTrackResiduals : public DQMEDAnalyzer {
enum TrackerType {
TRACKERTYPE_STRIP, TRACKERTYPE_PIXEL
};

template<TrackerType pixel_or_strip>
class MonitorTrackResidualsBase : public DQMEDAnalyzer {
public:
// constructors and EDAnalyzer Methods
explicit MonitorTrackResiduals(const edm::ParameterSet&);
~MonitorTrackResiduals();
explicit MonitorTrackResidualsBase(const edm::ParameterSet&);
~MonitorTrackResidualsBase();
void dqmBeginRun(const edm::Run& , const edm::EventSetup& ) ;
virtual void endRun(const edm::Run&, const edm::EventSetup&);
virtual void beginJob(void);
virtual void endJob(void);
virtual void analyze(const edm::Event&, const edm::EventSetup&);
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
// Own methods
void createMEs( DQMStore::IBooker & , const edm::EventSetup&);
private:

DQMStore * dqmStore_;
edm::ParameterSet conf_;
edm::ParameterSet Parameters;

// Own methods
void createMEs( DQMStore::IBooker & , const edm::EventSetup&);
std::pair<std::string, int32_t> findSubdetAndLayer(uint32_t ModuleID, const TrackerTopology* tTopo);

struct HistoPair {
Expand All @@ -63,9 +62,19 @@ class MonitorTrackResiduals : public DQMEDAnalyzer {
HistoSet m_SubdetLayerResiduals;
HistoSet m_ModuleResiduals;

edm::ParameterSet conf_;
edm::ParameterSet Parameters;
edm::EDGetTokenT<reco::VertexCollection> offlinePrimaryVerticesToken_;

unsigned long long m_cacheID_;
bool ModOn;

GenericTriggerEventFlag* genTriggerEventFlag_;
TrackerValidationVariables avalidator_;
};

// Naming is for legacy reasons.
typedef MonitorTrackResidualsBase<TRACKERTYPE_STRIP> MonitorTrackResiduals;
typedef MonitorTrackResidualsBase<TRACKERTYPE_PIXEL> SiPixelMonitorTrackResiduals;

#endif
Expand Up @@ -5,7 +5,6 @@
OutputMEsInRootFile = cms.bool(False),
# should histogramms on module level be booked and filled?
Mod_On = cms.bool(True),
trajectoryInput = cms.string('TrackRefitter'),
OutputFileName = cms.string('test_monitortracks.root'),
# bining and range for absolute and normalized residual histogramms
TH1ResModules = cms.PSet(
Expand All @@ -21,6 +20,7 @@
# input for Tracks and Trajectories, should be TrackRefitter
# or similar
Tracks = cms.InputTag("TrackRefitter"),
trajectoryInput = cms.string('TrackRefitter'),
# should all MEs be reset after each run?
ResetAfterRun = cms.bool(True)
)
Expand Down
28 changes: 28 additions & 0 deletions DQM/TrackerMonitorTrack/python/SiPixelMonitorTrackResiduals_cfi.py
@@ -0,0 +1,28 @@
import FWCore.ParameterSet.Config as cms

# SiPixelMonitorTrackResiduals
SiPixelMonitorTrackResiduals = cms.EDAnalyzer("SiPixelMonitorTrackResiduals",
OutputMEsInRootFile = cms.bool(False),
# should histogramms on module level be booked and filled?
Mod_On = cms.bool(False),
OutputFileName = cms.string('test_monitortracks.root'),
# bining and range for absolute and normalized residual histogramms
TH1ResModules = cms.PSet(
xmin = cms.double(-0.05), # native unit in CMS is [cm], so these are 500um
Nbinx = cms.int32(100),
xmax = cms.double(0.05)
),
TH1NormResModules = cms.PSet(
xmin = cms.double(-5.0),
Nbinx = cms.int32(100),
xmax = cms.double(5.0)
),
# input for Tracks and Trajectories, should be TrackRefitter
# or similar
Tracks = cms.InputTag("generalTracks"),
trajectoryInput = cms.string("generalTracks"),
# should all MEs be reset after each run?
ResetAfterRun = cms.bool(True)
)


0 comments on commit 5437ff7

Please sign in to comment.