Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CTPPS: diamond DQM #18198

Merged
merged 18 commits into from Apr 18, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
893 changes: 893 additions & 0 deletions DQM/CTPPS/plugins/CTPPSDiamondDQMSource.cc

Large diffs are not rendered by default.

Expand Up @@ -4,10 +4,13 @@

from DQM.CTPPS.totemRPDQMSource_cfi import *

from DQM.CTPPS.ctppsDiamondDQMSource_cfi import *

from DQM.CTPPS.totemRPDQMHarvester_cfi import *

totemDQM = cms.Sequence(
totemDAQTriggerDQMSource *
totemRPDQMSource *
totemRPDQMHarvester
ctppsDQM = cms.Sequence(
totemDAQTriggerDQMSource *
totemRPDQMSource *
ctppsDiamondDQMSource *
totemRPDQMHarvester
)
15 changes: 15 additions & 0 deletions DQM/CTPPS/python/ctppsDiamondDQMSource_cfi.py
@@ -0,0 +1,15 @@
import FWCore.ParameterSet.Config as cms

ctppsDiamondDQMSource = cms.EDAnalyzer("CTPPSDiamondDQMSource",
tagStatus = cms.InputTag("ctppsDiamondRawToDigi", "TimingDiamond"),
tagDigi = cms.InputTag("ctppsDiamondRawToDigi", "TimingDiamond"),
tagFEDInfo = cms.InputTag("ctppsDiamondRawToDigi", "TimingDiamond"),
tagDiamondRecHits = cms.InputTag("ctppsDiamondRecHits"),
tagDiamondLocalTracks = cms.InputTag("ctppsDiamondLocalTracks"),
tagLocalTrack = cms.InputTag("totemRPLocalTrackFitter"),

excludeMultipleHits = cms.bool(True),
minimumStripAngleForTomography = cms.double(1e-3),

verbosity = cms.untracked.uint32(10),
)
95 changes: 95 additions & 0 deletions DQM/CTPPS/test/diamond_dqm_test_cfg.py
@@ -0,0 +1,95 @@
import FWCore.ParameterSet.Config as cms
import string

process = cms.Process('RECODQM')

process.maxEvents = cms.untracked.PSet(
input = cms.untracked.int32(-1)
)

process.verbosity = cms.untracked.PSet(
input = cms.untracked.int32(-1)
)

# diamonds mapping
process.totemDAQMappingESSourceXML_TimingDiamond = cms.ESSource("TotemDAQMappingESSourceXML",
verbosity = cms.untracked.uint32(0),
subSystem = cms.untracked.string("TimingDiamond"),
configuration = cms.VPSet(
# before diamonds inserted in DAQ
cms.PSet(
validityRange = cms.EventRange("1:min - 283819:max"),
mappingFileNames = cms.vstring(),
maskFileNames = cms.vstring()
),
# after diamonds inserted in DAQ
cms.PSet(
validityRange = cms.EventRange("283820:min - 999999999:max"),
mappingFileNames = cms.vstring("CondFormats/CTPPSReadoutObjects/xml/mapping_timing_diamond.xml"),
maskFileNames = cms.vstring()
)
)
)

# minimum of logs
process.MessageLogger = cms.Service("MessageLogger",
statistics = cms.untracked.vstring(),
destinations = cms.untracked.vstring('cerr'),
cerr = cms.untracked.PSet(
threshold = cms.untracked.string('WARNING')
)
)

# load DQM framework
process.load("DQM.Integration.config.environment_cfi")
process.dqmEnv.subSystemFolder = "CTPPS"
process.dqmEnv.eventInfoFolder = "EventInfo"
process.dqmSaver.path = ""
process.dqmSaver.tag = "CTPPS"


process.source = cms.Source("PoolSource",
fileNames = cms.untracked.vstring(
*(
'/store/data/Run2016H/HLTPhysics/RAW/v1/000/283/885/00000/008F3821-3C9D-E611-BD53-FA163E866791.root',
)

)
)

# raw-to-digi conversion
process.load("EventFilter.CTPPSRawToDigi.ctppsRawToDigi_cff")

# local RP reconstruction chain with standard settings
process.load("RecoCTPPS.Configuration.recoCTPPS_cff")

# rechits production
process.load('Geometry.VeryForwardGeometry.geometryRP_cfi')
process.load('RecoCTPPS.TotemRPLocal.ctppsDiamondRecHits_cfi')

# local tracks fitter
process.load('RecoCTPPS.TotemRPLocal.ctppsDiamondLocalTracks_cfi')


# CTPPS DQM modules
process.load("DQM.CTPPS.ctppsDQM_cff")
process.ctppsDiamondDQMSource.excludeMultipleHits = cms.bool(True);

process.path = cms.Path(
process.ctppsRawToDigi *
process.recoCTPPS *
process.ctppsDiamondRawToDigi *
process.ctppsDiamondRecHits *
process.ctppsDiamondLocalTracks *
process.ctppsDQM
)

process.end_path = cms.EndPath(
process.dqmEnv +
process.dqmSaver
)

process.schedule = cms.Schedule(
process.path,
process.end_path
)
4 changes: 2 additions & 2 deletions DQM/CTPPS/test/dqm_test_cfg.py
Expand Up @@ -41,12 +41,12 @@
process.load("RecoCTPPS.Configuration.recoCTPPS_cff")

# CTPPS DQM modules
process.load("DQM.CTPPS.totemDQM_cff")
process.load("DQM.CTPPS.ctppsDQM_cff")

process.path = cms.Path(
process.ctppsRawToDigi *
process.recoCTPPS *
process.totemDQM
process.ctppsDQM
)

process.end_path = cms.EndPath(
Expand Down
6 changes: 3 additions & 3 deletions DQMOffline/Configuration/python/DQMOffline_cff.py
Expand Up @@ -18,7 +18,7 @@
from Validation.RecoTau.DQMSequences_cfi import *
from DQMOffline.Hcal.HcalDQMOfflineSequence_cff import *
from DQMOffline.L1Trigger.L1TriggerDqmOffline_cff import *
from DQM.CTPPS.totemDQM_cff import *
from DQM.CTPPS.ctppsDQM_cff import *

DQMOfflinePreDPG = cms.Sequence( dqmDcsInfo *
l1TriggerDqmOffline * # L1 emulator is run within this sequence for real data
Expand Down Expand Up @@ -79,12 +79,12 @@
DQMMessageLogger )

_ctpps_2016_DQMOffline = DQMOffline.copy()
_ctpps_2016_DQMOffline *= totemDQM
_ctpps_2016_DQMOffline *= ctppsDQM
from Configuration.Eras.Modifier_ctpps_2016_cff import ctpps_2016
ctpps_2016.toReplaceWith(DQMOffline, _ctpps_2016_DQMOffline)

_ctpps_2016_DQMOffline = DQMOffline.copy()
#_ctpps_2016_DQMOffline *= totemDQM
#_ctpps_2016_DQMOffline *= ctppsDQM
ctpps_2016.toReplaceWith(DQMOffline, _ctpps_2016_DQMOffline)

DQMOfflineFakeHLT = cms.Sequence( DQMOffline )
Expand Down
92 changes: 43 additions & 49 deletions DataFormats/CTPPSDigi/interface/HPTDCErrorFlags.h
@@ -1,5 +1,5 @@
#ifndef CTPPSDigi_HPTDCErrorFlags_h
#define CTPPSDigi_HPTDCErrorFlags_h
#ifndef DataFormats_CTPPSDigi_HPTDCErrorFlags_h
#define DataFormats_CTPPSDigi_HPTDCErrorFlags_h

#include <string>

Expand All @@ -12,13 +12,13 @@
* July 2016
*/

// namespace HPTDCErrors {
struct HPTDCErrorFlags {
HPTDCErrorFlags(unsigned short flags=0): error_flags(flags) {}

class HPTDCErrorFlags
{
public:
bool getErrorId(unsigned short id)
{

HPTDCErrorFlags( unsigned short flags=0 ) : error_flags( flags ) {}

bool getErrorId( unsigned short id ) const {
switch (id) {
case 0: return getInternalFatalChipError();
case 1: return getEventLost();
Expand All @@ -39,56 +39,50 @@ HPTDCErrorFlags(unsigned short flags=0): error_flags(flags) {}
}
}

bool getInternalFatalChipError() { return error_flags&0x1; }
bool getEventLost() { return (error_flags>> 1)&0x1; }
bool getHitRejectedByEventSizeLimit() { return (error_flags>> 2)&0x1; }
bool getHitErrorGroup3() { return (error_flags>> 3)&0x1; }
bool getHitLostL1OverflowGroup3() { return (error_flags>> 4)&0x1; }
bool getHitLostROFifoOverflowGroup3() { return (error_flags>> 5)&0x1; }
bool getHitErrorGroup2() { return (error_flags>> 6)&0x1; }
bool getHitLostL1OverflowGroup2() { return (error_flags>> 7)&0x1; }
bool getHitLostROFifoOverflowGroup2() { return (error_flags>> 8)&0x1; }
bool getHitErrorGroup1() { return (error_flags>> 9)&0x1; }
bool getHitLostL1OverflowGroup1() { return (error_flags>>10)&0x1; }
bool getHitLostROFifoOverflowGroup1() { return (error_flags>>11)&0x1; }
bool getHitErrorGroup0() { return (error_flags>>12)&0x1; }
bool getHitLostL1OverflowGroup0() { return (error_flags>>13)&0x1; }
bool getHitLostROFifoOverflowGroup0() { return (error_flags>>14)&0x1; }
bool getInternalFatalChipError() const { return error_flags & 0x1; }
bool getEventLost() const { return ( error_flags>> 1 ) & 0x1; }
bool getHitRejectedByEventSizeLimit() const { return ( error_flags>> 2 ) & 0x1; }
bool getHitErrorGroup3() const { return ( error_flags>> 3 ) & 0x1; }
bool getHitLostL1OverflowGroup3() const { return ( error_flags>> 4 ) & 0x1; }
bool getHitLostROFifoOverflowGroup3() const { return ( error_flags>> 5 ) & 0x1; }
bool getHitErrorGroup2() const { return ( error_flags>> 6 ) & 0x1; }
bool getHitLostL1OverflowGroup2() const { return ( error_flags>> 7 ) & 0x1; }
bool getHitLostROFifoOverflowGroup2() const { return ( error_flags>> 8 ) & 0x1; }
bool getHitErrorGroup1() const { return ( error_flags>> 9 ) & 0x1; }
bool getHitLostL1OverflowGroup1() const { return ( error_flags>>10 ) & 0x1; }
bool getHitLostROFifoOverflowGroup1() const { return ( error_flags>>11 ) & 0x1; }
bool getHitErrorGroup0() const { return ( error_flags>>12 ) & 0x1; }
bool getHitLostL1OverflowGroup0() const { return ( error_flags>>13 ) & 0x1; }
bool getHitLostROFifoOverflowGroup0() const { return ( error_flags>>14 ) & 0x1; }

inline unsigned short getErrorFlag() const
{
inline unsigned short getErrorFlag() const {
return error_flags;
}

static std::string getHPTDCErrorName(const unsigned short id)
{
switch (id) {
case 0: return "InternalFatalChipError";
case 1: return "EventLost";
case 2: return "HitRejectedByEventSizeLimit";
case 3: return "HitErrorGroup3";
case 4: return "HitLostL1OverflowGroup3";
case 5: return "HitLostROFifoOverflowGroup3";
case 6: return "HitErrorGroup2";
case 7: return "HitLostL1OverflowGroup2";
case 8: return "HitLostROFifoOverflowGroup2";
case 9: return "HitErrorGroup1";
case 10: return "HitLostL1OverflowGroup1";
case 11: return "HitLostROFifoOverflowGroup1";
case 12: return "HitErrorGroup0";
case 13: return "HitLostL1OverflowGroup0";
case 14: return "HitLostROFifoOverflowGroup0";
default: return "NONE";
static std::string getHPTDCErrorName( const unsigned short id ) {
switch ( id ) {
case 0: return "InternalFatalChipError";
case 1: return "EventLost";
case 2: return "HitRejectedByEventSizeLimit";
case 3: return "HitErrorGroup3";
case 4: return "HitLostL1OverflowGroup3";
case 5: return "HitLostROFifoOverflowGroup3";
case 6: return "HitErrorGroup2";
case 7: return "HitLostL1OverflowGroup2";
case 8: return "HitLostROFifoOverflowGroup2";
case 9: return "HitErrorGroup1";
case 10: return "HitLostL1OverflowGroup1";
case 11: return "HitLostROFifoOverflowGroup1";
case 12: return "HitErrorGroup0";
case 13: return "HitLostL1OverflowGroup0";
case 14: return "HitLostROFifoOverflowGroup0";
default: return "NONE";
}
}

private:
unsigned short error_flags;


};



#endif

Expand Up @@ -21,6 +21,8 @@ CTPPSDiamondRecHitProducerAlgorithm::build( const TotemRPGeometry* geom, const e
for ( edm::DetSetVector<CTPPSDiamondDigi>::const_iterator vec = input.begin(); vec != input.end(); ++vec )
{
const CTPPSDiamondDetId detid( vec->detId() );

if ( detid.channel() > 20 ) continue; // VFAT-like information, to be ignored by CTPPSDiamondRecHitProducer

const DetGeomDesc* det = geom->GetDetector( detid );
const float x_pos = det->translation().x(),
Expand Down