Skip to content

Commit

Permalink
RecHit validation successfully completed
Browse files Browse the repository at this point in the history
timing skeleton added
  • Loading branch information
Bruno Alves authored and bfonta committed Sep 15, 2020
1 parent 0faad27 commit f865f26
Show file tree
Hide file tree
Showing 7 changed files with 116 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ class HGChebUncalibratedRecHitConstantData {
double keV2DIGI_; //energy to femto coloumb conversion: 1000 eV/3.62 (eV per e) / 6.24150934e3 (e per fC)
double uncalib2GeV_; //sets the ADC; obtained by dividing 1e-6 by hgcHEB_keV2DIGI_
double noise_MIP_; //noise
uint32_t layerOffset_; //layer offset relative to layer#1 of the EE subsetector
};

#endif
Original file line number Diff line number Diff line change
Expand Up @@ -151,8 +151,7 @@ void heb_to_rechit(HGCRecHitSoA dst_soa, HGCUncalibratedRecHitSoA src_soa, const
for (unsigned int i = tid; i < length; i += blockDim.x * gridDim.x)
{
HeterogeneousHGCScintillatorDetId detid(src_soa.id_[i]);
uint32_t layer = detid.layer(); //+ cdata.layerOffset_; CHECK LAYERS!!!!!!!
//printf("layer: %d\n", layer);
uint32_t layer = detid.layer() + cdata.layerOffset_;
float weight = get_weight_from_layer(layer, cdata.weights_);
float noise = cdata.noise_MIP_;
float sigmaNoiseGeV = 1e-3 * noise * weight;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ void HeterogeneousHGCalHEBRecHitProducer::assert_sizes_constants_(const HGCConst
void HeterogeneousHGCalHEBRecHitProducer::acquire(edm::Event const& event, edm::EventSetup const& setup, edm::WaitingTaskWithArenaHolder w) {
const cms::cuda::ScopedContextAcquire ctx{event.streamID(), std::move(w), ctxState_};

//set_conditions_(setup);
set_conditions_(setup, cdata_);

event.getByToken(token_, handle_heb_);
const auto &hits_heb = *handle_heb_;
Expand All @@ -59,17 +59,16 @@ void HeterogeneousHGCalHEBRecHitProducer::acquire(edm::Event const& event, edm::
}
}

void HeterogeneousHGCalHEBRecHitProducer::set_conditions_(const edm::EventSetup& setup)
void HeterogeneousHGCalHEBRecHitProducer::set_conditions_(const edm::EventSetup& setup, HGChebUncalibratedRecHitConstantData& cdata)
{
/*
tools_->getEventSetup(setup);
std::string handle_str;
handle_str = "HGCalHEScintillatorSensitive";
edm::ESHandle<HGCalGeometry> handle;
setup.get<IdealGeometryRecord>().get(handle_str, handle);
ddd_ = &( handle->topology().dddConstants() );
params_ = ddd_->getParameter();
*/
cdata.layerOffset_ = params_->layerOffset_; //=28 (30-07-2020)
}

void HeterogeneousHGCalHEBRecHitProducer::produce(edm::Event& event, const edm::EventSetup& setup)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,11 @@ class HeterogeneousHGCalHEBRecHitProducer: public edm::stream::EDProducer<edm::E
cms::cuda::device::unique_ptr<std::byte[]> d_mem_;
cms::cuda::host::unique_ptr<std::byte[]> mem_out_;

//conditions (geometry, topology, ...)
void set_conditions_(const edm::EventSetup&);
//conditions
void set_conditions_(const edm::EventSetup&, HGChebUncalibratedRecHitConstantData&);
std::unique_ptr<hgcal::RecHitTools> tools_;
const HGCalDDDConstants* ddd_ = nullptr;
const HGCalParameters* params_ = nullptr;

//data processing
void convert_collection_data_to_soa_(const HGChebUncalibratedRecHitCollection&, HGCUncalibratedRecHitSoA*, const unsigned int&);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,9 @@ void HeterogeneousHGCalHEFRecHitProducer::acquire(edm::Event const& event, edm::
}
}

void HeterogeneousHGCalHEFRecHitProducer::set_conditions_(const edm::EventSetup& setup, HGChefUncalibratedRecHitConstantData& cdata) {
//the geometry is not required if the layer offset is hardcoded (potential speed-up)
void HeterogeneousHGCalHEFRecHitProducer::set_conditions_(const edm::EventSetup& setup, HGChefUncalibratedRecHitConstantData& cdata)
{
tools_->getEventSetup(setup);
std::string handle_str;
handle_str = "HGCalHESiliconSensitive";
Expand Down
7 changes: 3 additions & 4 deletions UserCode/RecHitsValidator/python/SwitchHGCalRecHit_cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,9 @@

from HeterogeneousCore.CUDACore.SwitchProducerCUDA import SwitchProducerCUDA
process.switch = SwitchProducerCUDA( cpu = process.HGCalRecHits, # legacy CPU
cuda = cms.EDAlias(
task_HeterogeneousHGCalEERecHits = cms.VPSet( cms.PSet(type = cms.string("HGCEERecHits")) ),
task_HeterogeneousHGCalHEFRecHits = cms.VPSet( cms.PSet(type = cms.string("HGCHEFRecHits")) ),
task_HeterogeneousHGCalHEBRecHits = cms.VPSet( cms.PSet(type = cms.string("HGCHEBRecHits")) )
cuda = cms.EDAlias( HeterogeneousHGCalEERecHitsTask = cms.VPSet( cms.PSet(type = cms.string("HGCEERecHits")) ),
HeterogeneousHGCalHEFRecHitsTask = cms.VPSet( cms.PSet(type = cms.string("HGCHEFRecHits")) ),
HeterogeneousHGCalHEBRecHitsTask = cms.VPSet( cms.PSet(type = cms.string("HGCHEBRecHits")) )
) )

#process.fooCUDA = cms.EDProducer("FooProducerCUDA")
Expand Down
101 changes: 101 additions & 0 deletions UserCode/Timing/python/HeterogeneousRecHitsTiming_cfg.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
import os, sys, glob
import FWCore.ParameterSet.Config as cms
from Configuration.StandardSequences.Eras import eras
from Configuration.ProcessModifiers.gpu_cff import gpu
from RecoLocalCalo.HGCalRecProducers.HGCalRecHit_cfi import HGCalRecHit

#package loading
process = cms.Process("gpuValidation", gpu)
process.load('FWCore.MessageService.MessageLogger_cfi')
process.load('Configuration.StandardSequences.Services_cff')
process.load('SimGeneral.HepPDTESSource.pythiapdt_cfi')
process.load('Configuration.StandardSequences.MagneticField_cff')
#process.load('Configuration.EventContent.EventContent_cff')
process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')
process.load('Configuration.Geometry.GeometryExtended2026D46Reco_cff')
process.load('HeterogeneousCore.CUDAServices.CUDAService_cfi')
process.load('RecoLocalCalo.HGCalRecProducers.HGCalRecHit_cfi')
process.load('SimCalorimetry.HGCalSimProducers.hgcalDigitizer_cfi')

from Configuration.AlCa.GlobalTag import GlobalTag
process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase2_realistic', '')

from RecoLocalCalo.HGCalRecProducers.HGCalRecHit_cfi import dEdX_weights_v10
process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(-1) )

#fNames = ['file:/afs/cern.ch/user/b/bfontana/CMSSW_11_1_0_pre6/src/20495.0_CloseByPGun_CE_E_Front_200um+CE_E_Front_200um_2026D41_GenSimHLBeamSpotFull+DigiFullTrigger_2026D41+RecoFullGlobal_2026D41+HARVESTFullGlobal_2026D41/step3.root']
indir = '/eos/cms/store/group/dpg_hgcal/comm_hgcal/bfontana/GPUScintillator/CloseByParticleGunProducer_bfontana_PDGId22_nPart1_E60_eta1p4to4p0_CE_H_Coarse_Scint_Delta_2p5_20200728_bfontana_PDGId22_nPart1_E60_eta1p4to4p0_CE_H_Coarse_Scint_Delta_2p5_20200728/RECO/'
glob = glob.glob( os.path.join(indir, 'closeby_PDGid22_x100_E60.0To60.0_RECO_*.root') )
fNames = ['file:' + it for it in glob][:1]

keep = 'keep *'
drop = 'drop CSCDetIdCSCALCTPreTriggerDigiMuonDigiCollection_simCscTriggerPrimitiveDigis__HLT'
process.source = cms.Source("PoolSource",
fileNames = cms.untracked.vstring(fNames),
inputCommands = cms.untracked.vstring([keep, drop]),
duplicateCheckMode = cms.untracked.string("noDuplicateCheck"))

process.options = cms.untracked.PSet(
wantSummary = cms.untracked.bool( False ) ) #add option for edmStreams

process.ThroughputService = cms.Service( "ThroughputService",
eventRange = cms.untracked.uint32( 300 ),
eventResolution = cms.untracked.uint32( 1 ),
printEventSummary = cms.untracked.bool( True ),
enableDQM = cms.untracked.bool( False )
#valid only for enableDQM=True
#dqmPath = cms.untracked.string( "HLT/Throughput" ),
#timeRange = cms.untracked.double( 60000.0 ),
#dqmPathByProcesses = cms.untracked.bool( False ),
#timeResolution = cms.untracked.double( 5.828 )
)

HeterogeneousHGCalEERecHits = cms.EDProducer( 'HeterogeneousHGCalEERecHitProducer',
HGCEEUncalibRecHitsTok = cms.InputTag('HGCalUncalibRecHit', 'HGCEEUncalibRecHits'),
HGCEE_keV2DIGI = HGCalRecHit.__dict__['HGCEE_keV2DIGI'],
minValSiPar = HGCalRecHit.__dict__['minValSiPar'],
maxValSiPar = HGCalRecHit.__dict__['maxValSiPar'],
constSiPar = HGCalRecHit.__dict__['constSiPar'],
noiseSiPar = HGCalRecHit.__dict__['noiseSiPar'],
HGCEE_fCPerMIP = HGCalRecHit.__dict__['HGCEE_fCPerMIP'],
HGCEE_isSiFE = HGCalRecHit.__dict__['HGCEE_isSiFE'],
HGCEE_noise_fC = HGCalRecHit.__dict__['HGCEE_noise_fC'],
HGCEE_cce = HGCalRecHit.__dict__['HGCEE_cce'],
rcorr = HGCalRecHit.__dict__['thicknessCorrection'],
weights = HGCalRecHit.__dict__['layerWeights'] )

HeterogeneousHGCalHEFRecHits = cms.EDProducer( 'HeterogeneousHGCalHEFRecHitProducer',
HGCHEFUncalibRecHitsTok = cms.InputTag('HGCalUncalibRecHit', 'HGCHEFUncalibRecHits'),
HGCHEF_keV2DIGI = HGCalRecHit.__dict__['HGCHEF_keV2DIGI'],
minValSiPar = HGCalRecHit.__dict__['minValSiPar'],
maxValSiPar = HGCalRecHit.__dict__['maxValSiPar'],
constSiPar = HGCalRecHit.__dict__['constSiPar'],
noiseSiPar = HGCalRecHit.__dict__['noiseSiPar'],
HGCHEF_fCPerMIP = HGCalRecHit.__dict__['HGCHEF_fCPerMIP'],
HGCHEF_isSiFE = HGCalRecHit.__dict__['HGCHEF_isSiFE'],
HGCHEF_noise_fC = HGCalRecHit.__dict__['HGCHEF_noise_fC'],
HGCHEF_cce = HGCalRecHit.__dict__['HGCHEF_cce'],
rcorr = HGCalRecHit.__dict__['thicknessCorrection'],
weights = HGCalRecHit.__dict__['layerWeights'] )

HeterogeneousHGCalHEBRecHits = cms.EDProducer( 'HeterogeneousHGCalHEBRecHitProducer',
HGCHEBUncalibRecHitsTok = cms.InputTag('HGCalUncalibRecHit', 'HGCHEBUncalibRecHits'),
HGCHEB_keV2DIGI = HGCalRecHit.__dict__['HGCHEB_keV2DIGI'],
HGCHEB_noise_MIP = HGCalRecHit.__dict__['HGCHEB_noise_MIP'],
HGCHEB_isSiFE = HGCalRecHit.__dict__['HGCHEB_isSiFE'],
weights = HGCalRecHit.__dict__['layerWeights'] )

process.HeterogeneousHGCalEERecHits = HeterogeneousHGCalEERecHits
process.HeterogeneousHGCalHEFRecHits = HeterogeneousHGCalHEFRecHits
process.HeterogeneousHGCalHEBRecHits = HeterogeneousHGCalHEBRecHits
#process.HGCalRecHits = HGCalRecHit.clone() #CPU version

#process.recHitsTask = cms.Task( process.HeterogeneousHGCalEERecHits, process.HeterogeneousHGCalHEFRecHits, process.HeterogeneousHGCalHEBRecHits )
process.recHitsTask = cms.Task( process.HeterogeneousHGCalEERecHits )
process.path = cms.Path( process.recHitsTask )

"""
process.out = cms.OutputModule( "PoolOutputModule",
fileName = cms.untracked.string('out.root') )
process.outpath = cms.EndPath(process.out)
"""

0 comments on commit f865f26

Please sign in to comment.