Skip to content

Commit

Permalink
Merge pull request #15613 from lgray/ecalDetailedTime_810
Browse files Browse the repository at this point in the history
Ecal Detailed Time Rechits in 810
  • Loading branch information
davidlange6 committed Sep 15, 2016
2 parents af6ca44 + 369440a commit 86088d6
Show file tree
Hide file tree
Showing 39 changed files with 1,655 additions and 74 deletions.
7 changes: 7 additions & 0 deletions Configuration/Eras/python/Era_Phase2C1_timing_cff.py
@@ -0,0 +1,7 @@
import FWCore.ParameterSet.Config as cms

from Configuration.Eras.Era_Phase2C1_cff import Phase2C1
from Configuration.Eras.Modifier_phase2_timing_cff import phase2_timing

Phase2C1_timing = cms.ModifierChain(Phase2C1, phase2_timing)

7 changes: 7 additions & 0 deletions Configuration/Eras/python/Era_Phase2C2_timing_cff.py
@@ -0,0 +1,7 @@
import FWCore.ParameterSet.Config as cms

from Configuration.Eras.Era_Phase2C2_cff import Phase2C2
from Configuration.Eras.Modifier_phase2_timing_cff import phase2_timing

Phase2C2_timing = cms.ModifierChain(Phase2C2, phase2_timing)

4 changes: 4 additions & 0 deletions Configuration/Eras/python/Modifier_phase2_timing_cff.py
@@ -0,0 +1,4 @@
import FWCore.ParameterSet.Config as cms

phase2_timing = cms.Modifier()

3 changes: 3 additions & 0 deletions Configuration/PyReleaseValidation/python/relval_steps.py
Expand Up @@ -1603,6 +1603,9 @@ def lhegensim(fragment,howMuch):
defaultDataSets['2023D1']=''
defaultDataSets['2023D2']=''
defaultDataSets['2023D3']=''
defaultDataSets['2023D1Timing']=''
defaultDataSets['2023D2Timing']=''
defaultDataSets['2023D3Timing']=''

keys=defaultDataSets.keys()
for key in keys:
Expand Down
Expand Up @@ -13,9 +13,15 @@
'2023D1',
'2023D1PU',
'2023D2',
'2023D2PU',
'2023D3',
'2023D2PU',
'2023D3',
'2023D3PU',
'2023D1Timing',
'2023D1TimingPU',
'2023D2Timing',
'2023D2TimingPU',
'2023D3Timing',
'2023D3TimingPU'
]

upgradeSteps=[
Expand Down Expand Up @@ -62,30 +68,51 @@
'Custom' : 'SLHCUpgradeSimulations/Configuration/combinedCustoms.cust_2023tilted',
'Era' : 'Phase2C1',
'ScenToRun' : ['GenSimFull','DigiFull','RecoFullGlobal','HARVESTFullGlobal'],
},
},
'2023D2' : {
'Geom' : 'Extended2023D2',
'GT' : 'auto:run2_mc',
'Custom' : 'SLHCUpgradeSimulations/Configuration/combinedCustoms.cust_2023flat',
'Era' : 'Phase2C1',
'ScenToRun' : ['GenSimFull','DigiFull','RecoFullGlobal','HARVESTFullGlobal'],
},
},
'2023D3' : {
'Geom' : 'Extended2023D3',
'GT' : 'auto:run2_mc',
'Custom' : 'SLHCUpgradeSimulations/Configuration/combinedCustoms.cust_2023tilted',
'Era' : 'Phase2C2',
'ScenToRun' : ['GenSimFull','DigiFull','RecoFullGlobal', 'HARVESTFullGlobal'],
},
}
}


#Timing (later we can alter geometry, etc, if need be)
upgradeProperties[2023]['2023D1Timing'] = deepcopy(upgradeProperties[2023]['2023D1'])
upgradeProperties[2023]['2023D1Timing']['Era'] = 'Phase2C1_timing'
upgradeProperties[2023]['2023D2Timing'] = deepcopy(upgradeProperties[2023]['2023D2'])
upgradeProperties[2023]['2023D2Timing']['Era'] = 'Phase2C1_timing'
upgradeProperties[2023]['2023D3Timing'] = deepcopy(upgradeProperties[2023]['2023D3'])
upgradeProperties[2023]['2023D3Timing']['Era'] = 'Phase2C2_timing'

#standard PU sequences
upgradeProperties[2023]['2017PU'] = deepcopy(upgradeProperties[2017]['2017'])
upgradeProperties[2023]['2017PU']['ScenToRun'] = ['GenSimFull','DigiFullPU','RecoFullPU','HARVESTFullPU']
upgradeProperties[2023]['2023D1PU'] = deepcopy(upgradeProperties[2023]['2023D1'])
upgradeProperties[2023]['2023D1PU']['ScenToRun'] = ['GenSimFull','DigiFullPU','RecoFullGlobalPU', 'HARVESTFullGlobalPU']
upgradeProperties[2023]['2023D2PU'] = deepcopy(upgradeProperties[2023]['2023D2'])
upgradeProperties[2023]['2023D2PU']['ScenToRun'] = ['GenSimFull','DigiFullPU','RecoFullGlobalPU', 'HARVESTFullGlobalPU']
upgradeProperties[2023]['2023D3PU'] = deepcopy(upgradeProperties[2023]['2023D3'])
upgradeProperties[2023]['2023D3PU']['ScenToRun'] = ['GenSimFull','DigiFullPU','RecoFullGlobalPU', 'HARVESTFullGlobalPU']

#Timing PU (for now copy ScenToRun of standard PU)
upgradeProperties[2023]['2023D1TimingPU'] = deepcopy(upgradeProperties[2023]['2023D1Timing'])
upgradeProperties[2023]['2023D1TimingPU']['ScenToRun'] = deepcopy(upgradeProperties[2023]['2023D1PU']['ScenToRun'])
upgradeProperties[2023]['2023D2TimingPU'] = deepcopy(upgradeProperties[2023]['2023D2Timing'])
upgradeProperties[2023]['2023D2TimingPU']['ScenToRun'] = deepcopy(upgradeProperties[2023]['2023D2PU']['ScenToRun'])
upgradeProperties[2023]['2023D3TimingPU'] = deepcopy(upgradeProperties[2023]['2023D3Timing'])
upgradeProperties[2023]['2023D3TimingPU']['ScenToRun'] = deepcopy(upgradeProperties[2023]['2023D3PU']['ScenToRun'])


from Configuration.PyReleaseValidation.relval_steps import Kby

upgradeFragments=['FourMuPt_1_200_pythia8_cfi',
Expand Down
10 changes: 5 additions & 5 deletions Configuration/StandardSequences/python/Eras.py
Expand Up @@ -20,20 +20,21 @@ def __init__(self):
'Run2_2017_trackingPhase1PU70',
'Run3',
'Phase2C1',
'Phase2C2']
'Phase2C2',
'Phase2C1_timing',
'Phase2C2_timing']

internalUseMods = ['run2_common', 'run2_25ns_specific',
'run2_50ns_specific', 'run2_HI_specific',
'stage1L1Trigger', 'fastSim',
'run2_HE_2017', 'stage2L1Trigger',
'phase1Pixel', 'run3_GEM',
'phase2_common', 'phase2_tracker',
'phase2_hgcal', 'phase2_muon',
'phase2_hgcal', 'phase2_muon', 'phase2_timing',
'phase2_hcal',
'trackingLowPU', 'trackingPhase1', 'trackingPhase1PU70', 'ctpps_2016', 'trackingPhase2PU140',
'tracker_apv_vfp30_2016']


for e in allEras:
eObj=getattr(__import__('Configuration.Eras.Era_'+e+'_cff',globals(),locals(),[e],0),e)
self.addEra(e,eObj)
Expand Down Expand Up @@ -78,8 +79,7 @@ def inspect(self,name=None,onlyChosen=False,details=True):
if name is None:
if not onlyChosen or getattr(self,e).isChosen():
self.inspectEra(e,details)



eras=Eras()


Expand Down
1 change: 1 addition & 0 deletions DataFormats/CaloRecHit/interface/CaloRecHit.h
Expand Up @@ -17,6 +17,7 @@ class CaloRecHit {
float energy() const { return energy_; }
void setEnergy(float energy) { energy_=energy; }
float time() const { return time_; }
void setTime(float time) { time_=time; }
const DetId& detid() const { return id_; }
uint32_t flags() const { return flags_; }
void setFlags(uint32_t flags) { flags_=flags; }
Expand Down
2 changes: 2 additions & 0 deletions DataFormats/EcalDigi/interface/EcalDigiCollections.h
Expand Up @@ -4,6 +4,7 @@
#include "DataFormats/EcalDigi/interface/EBDataFrame.h"
#include "DataFormats/EcalDigi/interface/EEDataFrame.h"
#include "DataFormats/EcalDigi/interface/ESDataFrame.h"
#include "DataFormats/EcalDigi/interface/EcalTimeDigi.h"
#include "DataFormats/EcalDigi/interface/EcalTriggerPrimitiveDigi.h"
#include "DataFormats/EcalDigi/interface/EcalTrigPrimCompactColl.h"
#include "DataFormats/EcalDigi/interface/EcalPseudoStripInputDigi.h"
Expand Down Expand Up @@ -104,6 +105,7 @@ void swap(ESDigiCollection& lhs, ESDigiCollection& rhs) {
lhs.swap(rhs);
}

typedef edm::SortedCollection<EcalTimeDigi> EcalTimeDigiCollection;
typedef edm::SortedCollection<EcalTriggerPrimitiveDigi> EcalTrigPrimDigiCollection;

typedef edm::SortedCollection<EcalPseudoStripInputDigi> EcalPSInputDigiCollection;
Expand Down
50 changes: 50 additions & 0 deletions DataFormats/EcalDigi/interface/EcalTimeDigi.h
@@ -0,0 +1,50 @@
#ifndef _DataFormats_EcalDigi_ECALTIMEDIGI_H_
#define _DataFormats_EcalDigi_ECALTIMEDIGI_H_

#include <ostream>
#include <vector>
#include "DataFormats/DetId/interface/DetId.h"

class EcalTimeDigi {
public:
typedef DetId key_type; ///< For the sorted collection

EcalTimeDigi(); // for persistence
explicit EcalTimeDigi(const DetId& id);

void swap(EcalTimeDigi& rh) {
std::swap(id_,rh.id_);
std::swap(size_,rh.size_);
std::swap(data_,rh.data_);
}

const DetId& id() const { return id_; }
int size() const { return size_; }

const float& operator[](unsigned int i) const { return data_[i]; }
const float& sample(unsigned int i) const { return data_[i]; }

void setSize(unsigned int size);
void setSample(unsigned int i, const float sam) { data_[i]=sam; }
void setSampleOfInterest(int i) { sampleOfInterest_=i; }

/// Gets the BX==0 sample. If =-1 then it means that only OOT hits are present
int sampleOfInterest() const { return sampleOfInterest_; }

private:
DetId id_;
unsigned int size_;
int sampleOfInterest_;
std::vector<float> data_;
};


inline void swap(EcalTimeDigi& lh, EcalTimeDigi& rh) {
lh.swap(rh);
}

std::ostream& operator<<(std::ostream& s, const EcalTimeDigi& digi);



#endif
22 changes: 22 additions & 0 deletions DataFormats/EcalDigi/src/EcalTimeDigi.cc
@@ -0,0 +1,22 @@
#include "DataFormats/EcalDigi/interface/EcalTimeDigi.h"

namespace {
constexpr unsigned int MAXSAMPLES = 10;
}

EcalTimeDigi::EcalTimeDigi() : id_(0), size_(0), sampleOfInterest_(-1), data_(MAXSAMPLES) {
}

EcalTimeDigi::EcalTimeDigi(const DetId& id) : id_(id),
size_(0), sampleOfInterest_(-1), data_(MAXSAMPLES) {
}

void EcalTimeDigi::setSize(unsigned int size) {
if (size>MAXSAMPLES) size_=MAXSAMPLES;
else size_=size;
data_.resize(size_);
}




7 changes: 7 additions & 0 deletions DataFormats/EcalDigi/src/classes.h
Expand Up @@ -6,22 +6,27 @@ namespace DataFormats_EcalDigi {
std::vector<EcalMGPASample> vMGPA_;
std::vector<EcalFEMSample> vFEM_;
std::vector<ESSample> vESSample_;
std::vector<float> vETS_;
std::vector<EcalTriggerPrimitiveSample> vETPS_;
std::vector<EcalPseudoStripInputSample> vEPSIS_;
std::vector<EcalMatacqDigi> vMD_;
std::vector<EcalTimeDigi> vTD_;

edm::SortedCollection<ESDataFrame> vES_;
edm::SortedCollection<EcalTimeDigi> vETDP_;
edm::SortedCollection<EcalTriggerPrimitiveDigi> vETP_;
edm::SortedCollection<EcalPseudoStripInputDigi> vEPSI_;
edm::SortedCollection<EBSrFlag> vEBSRF_;
edm::SortedCollection<EESrFlag> vEESRF_;
edm::SortedCollection<EcalPnDiodeDigi> vEPN_;
edm::SortedCollection<EcalMatacqDigi> vMDS_;
EcalMatacqDigi Matacq_;
EcalTimeDigi Time_;

EBDigiCollection theEB_;
EEDigiCollection theEE_;
ESDigiCollection theES_;
EcalTimeDigiCollection theEBTime_;
EcalTrigPrimDigiCollection theETP_;
EcalTrigPrimCompactColl theETP2_;

Expand All @@ -34,6 +39,7 @@ namespace DataFormats_EcalDigi {
edm::Wrapper<EBDigiCollection> anotherEBw_;
edm::Wrapper<EEDigiCollection> anotherEEw_;
edm::Wrapper<ESDigiCollection> anotherESw_;
edm::Wrapper<EcalTimeDigiCollection> anotherETDw_;
edm::Wrapper<EcalTrigPrimDigiCollection> anotherETPw_;
edm::Wrapper<EcalTrigPrimCompactColl> anotherETP2w_;
edm::Wrapper<EBSrFlagCollection> anotherEBSRFw_;
Expand All @@ -42,6 +48,7 @@ namespace DataFormats_EcalDigi {
edm::Wrapper<EcalMatacqDigiCollection> anotherMDw_;

edm::Wrapper< edm::SortedCollection<ESDataFrame> > theESw_;
edm::Wrapper< edm::SortedCollection<EcalTimeDigi> > theETDw_;
edm::Wrapper< edm::SortedCollection<EcalTriggerPrimitiveDigi> > theETPw_;
edm::Wrapper< edm::SortedCollection<EcalPseudoStripInputDigi> > theEPSIw_;
edm::Wrapper< edm::SortedCollection<EBSrFlag> > theEBSRFw_;
Expand Down
8 changes: 8 additions & 0 deletions DataFormats/EcalDigi/src/classes_def.xml
Expand Up @@ -44,9 +44,14 @@
<version ClassVersion="11" checksum="515819338"/>
<version ClassVersion="10" checksum="804498184"/>
</class>
<class name="EcalTimeDigi" ClassVersion="3">
<version ClassVersion="3" checksum="3095247500"/>
</class>

<class name="std::vector<EcalMGPASample>"/>
<class name="std::vector<EcalFEMSample>"/>
<class name="std::vector<ESSample>"/>
<class name="std::vector<float>"/>
<class name="std::vector<EcalTriggerPrimitiveSample>"/>
<class name="std::vector<EcalPseudoStripInputSample>"/>
<class name="std::vector<ESDataFrame>"/>
Expand All @@ -56,6 +61,7 @@
<class name="std::vector<EcalPseudoStripInputDigi>"/>
<class name="std::vector<EcalPnDiodeDigi>"/>
<class name="std::vector<EcalMatacqDigi>"/>
<class name="std::vector<EcalTimeDigi>"/>

<class name="EcalDigiCollection" ClassVersion="11">
<version ClassVersion="11" checksum="3935588643"/>
Expand Down Expand Up @@ -83,6 +89,7 @@
<class name="edm::Wrapper<EcalTrigPrimCompactColl>" splitLevel="0"/>

<class name="edm::SortedCollection<ESDataFrame,edm::StrictWeakOrdering<ESDataFrame> >"/>
<class name="edm::SortedCollection<EcalTimeDigi,edm::StrictWeakOrdering<EcalTimeDigi> >"/>
<class name="edm::SortedCollection<EcalTriggerPrimitiveDigi,edm::StrictWeakOrdering<EcalTriggerPrimitiveDigi> >"/>
<class name="edm::StrictWeakOrdering<EcalTriggerPrimitiveDigi>" /> <!-- Root6 -->
<class name="edm::SortedCollection<EcalPseudoStripInputDigi,edm::StrictWeakOrdering<EcalPseudoStripInputDigi> >"/>
Expand All @@ -97,6 +104,7 @@
<class name="edm::Wrapper<edm::SortedCollection<ESDataFrame,edm::StrictWeakOrdering<ESDataFrame> > >" splitLevel="0" id="C3D41492-2914-2291-7C22-BBE6D77043F7"/>
<class name="edm::Wrapper<edm::SortedCollection<EcalTriggerPrimitiveDigi,edm::StrictWeakOrdering<EcalTriggerPrimitiveDigi> > >" splitLevel="0" id="D932A444-CBDD-A27C-4D85-BFED25EFBCF8"/>
<class name="edm::Wrapper<edm::SortedCollection<EcalPseudoStripInputDigi,edm::StrictWeakOrdering<EcalPseudoStripInputDigi> > >" splitLevel="0" id=""/>
<class name="edm::Wrapper<edm::SortedCollection<EcalTimeDigi,edm::StrictWeakOrdering<EcalTimeDigi> > >" splitLevel="0" id=""/>
<class name="edm::Wrapper<edm::SortedCollection<EBSrFlag,edm::StrictWeakOrdering<EBSrFlag> > >" splitLevel="0" id="C0D3A113-A36C-40F1-A388-28ECE47DCBA5"/>
<class name="edm::Wrapper<edm::SortedCollection<EESrFlag,edm::StrictWeakOrdering<EESrFlag> > >" splitLevel="0" id="CE18D35E-E4F5-4685-8D9A-213D9ACB0606"/>
<class name="edm::Wrapper<edm::SortedCollection<EcalPnDiodeDigi,edm::StrictWeakOrdering<EcalPnDiodeDigi> > >" id="8104DEE4-28BC-284A-8397-7EF8F5DBA1B1"/>
Expand Down
1 change: 1 addition & 0 deletions DataFormats/EcalRecHit/interface/EcalRecHit.h
Expand Up @@ -68,6 +68,7 @@ class EcalRecHit {
float energy() const { return energy_; }
void setEnergy(float energy) { energy_=energy; }
float time() const { return time_; }
void setTime(float time) { time_ = time; }
const DetId& detid() const { return id_; }

/// get the id
Expand Down
Expand Up @@ -18,6 +18,7 @@
from RecoLocalCalo.EcalRecProducers.ecalCompactTrigPrim_cfi import *
from RecoLocalCalo.EcalRecProducers.ecalTPSkim_cfi import *

from RecoLocalCalo.EcalRecProducers.ecalDetailedTimeRecHit_cfi import *

#ecalUncalibRecHitSequence = cms.Sequence(ecalGlobalUncalibRecHit*
# ecalDetIdToBeRecovered)
Expand All @@ -33,3 +34,7 @@
ecalLocalRecoSequence = cms.Sequence(ecalUncalibRecHitSequence*
ecalRecHitSequence)

from Configuration.StandardSequences.Eras import eras
from RecoLocalCalo.EcalRecProducers.ecalDetailedTimeRecHit_cfi import *
_phase2_timing_ecalRecHitSequence = cms.Sequence( ecalRecHitSequence.copy() + ecalDetailedTimeRecHit )
eras.phase2_timing.toReplaceWith( ecalRecHitSequence, _phase2_timing_ecalRecHitSequence )
Expand Up @@ -30,3 +30,12 @@
)
)

from Configuration.StandardSequences.Eras import eras
#mods for timing
_phase2_timing_EcalOutputCommands = ['keep *_mix_EBTimeDigi_*',
'keep *_mix_EETimeDigi_*',
'keep *_ecalDetailedTimeRecHit_*_*']

eras.phase2_timing.toModify( ecalLocalRecoFEVT, outputCommands = ecalLocalRecoFEVT.outputCommands + _phase2_timing_EcalOutputCommands )
eras.phase2_timing.toModify( ecalLocalRecoRECO, outputCommands = ecalLocalRecoRECO.outputCommands + _phase2_timing_EcalOutputCommands )

0 comments on commit 86088d6

Please sign in to comment.