CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Functions
EcalPhiSymRecoSequence_cff Namespace Reference

Functions

def customise
 
def ecal_phisym_flattables
 
def ecal_phisym_output
 
def ecal_phisym_reco_sequence
 
def ecal_phisym_workflow
 

Function Documentation

def EcalPhiSymRecoSequence_cff.customise (   process)
Function to customize the process produced by cmsDriver.
The customisation works for a process that satisfies the following conditions:
- Run on /AlCaPhiSym/*/RAW data
- Run the following sequence (-s option of cmsDriver): 
RECO:bunchSpacingProducer+ecalMultiFitUncalibRecHitTask+ecalCalibratedRecHitTask,ALCA:EcalPhiSymByRun (or EcalPhiSymByLumi)

Definition at line 148 of file EcalPhiSymRecoSequence_cff.py.

References ecal_phisym_output().

149 def customise(process):
150  """
151  Function to customize the process produced by cmsDriver.
152  The customisation works for a process that satisfies the following conditions:
153  - Run on /AlCaPhiSym/*/RAW data
154  - Run the following sequence (-s option of cmsDriver):
155  RECO:bunchSpacingProducer+ecalMultiFitUncalibRecHitTask+ecalCalibratedRecHitTask,ALCA:EcalPhiSymByRun (or EcalPhiSymByLumi)
156  """
157 
158  # Change input collection for the /AlCaPhiSym/*/RAW stream dataformat
159  process.ecalMultiFitUncalibRecHit.cpu.EBdigiCollection = cms.InputTag("hltEcalPhiSymFilter", "phiSymEcalDigisEB")
160  process.ecalMultiFitUncalibRecHit.cpu.EEdigiCollection = cms.InputTag("hltEcalPhiSymFilter", "phiSymEcalDigisEE")
161  process.ecalRecHit.cpu.killDeadChannels = cms.bool( False )
162  process.ecalRecHit.cpu.recoverEBVFE = cms.bool( False )
163  process.ecalRecHit.cpu.recoverEEVFE = cms.bool( False )
164  process.ecalRecHit.cpu.recoverEBFE = cms.bool( False )
165  process.ecalRecHit.cpu.recoverEEFE = cms.bool( False )
166  process.ecalRecHit.cpu.recoverEEIsolatedChannels = cms.bool( False )
167  process.ecalRecHit.cpu.recoverEBIsolatedChannels = cms.bool( False )
168 
169  if "ALCARECOStreamEcalPhiSymByRunOutPath" in process.pathNames():
170  process.schedule.remove(process.ALCARECOStreamEcalPhiSymByRunOutPath)
171  if "ALCARECOStreamEcalPhiSymByLumiOutPath" in process.pathNames():
172  process.schedule.remove(process.ALCARECOStreamEcalPhiSymByLumiOutPath)
173  process.ALCARECOStreamEcalPhiSymOutNanoPath = cms.EndPath(ecal_phisym_output(process, save_flatnano=True)[0])
174  process.schedule.append(process.ALCARECOStreamEcalPhiSymOutNanoPath)
175 
176  return process
def EcalPhiSymRecoSequence_cff.ecal_phisym_flattables (   process,
  produce_by_run 
)

Definition at line 61 of file EcalPhiSymRecoSequence_cff.py.

References funct.abs(), ecal_phisym_output(), sistrip::SpyUtilities.range(), str, and common_cff.Var().

Referenced by ecal_phisym_workflow().

61 
62 def ecal_phisym_flattables(process, produce_by_run : bool=False):
63  """
64  Add the NanoAOD flat table producers.
65  This functions adjust also the output columns.
66  Should be called once nMisCalib has been set in the EcalPhiSymRecHitProducer
67  """
68 
69  process.load('Calibration.EcalCalibAlgos.EcalPhiSymFlatTableProducers_cfi')
70 
71  nmis = process.EcalPhiSymRecHitProducerRun.nMisCalib.value()
72  for imis in range(1, nmis+1):
73  # get the naming and indexing right.
74  if imis<nmis/2+1:
75  var_name = 'sumEt_m'+str(abs(int(imis-(nmis/2)-1)))
76  var = Var(f'sumEt({imis})', float, doc='ECAL PhiSym rechits: '+str(imis-(nmis/2)-1)+'*miscalib et', precision=23)
77  else:
78  var_name = 'sumEt_p'+str(int(imis-(nmis/2)))
79  var = Var(f'sumEt({imis})', float, doc='ECAL PhiSym rechits: '+str(imis-(nmis/2))+'*miscalib et', precision=23)
80 
81  if produce_by_run:
82  setattr(process.ecalPhiSymRecHitRunTableEB.variables, var_name, var)
83  setattr(process.ecalPhiSymRecHitRunTableEE.variables, var_name, var)
84  flattable_sequence = cms.Sequence( process.ecalPhiSymRecHitRunTableEB +
85  process.ecalPhiSymRecHitRunTableEE +
86  process.ecalPhiSymInfoRunTable )
87  else:
88  setattr(process.ecalPhiSymRecHitLumiTableEB.variables, var_name, var)
89  setattr(process.ecalPhiSymRecHitLumiTableEE.variables, var_name, var)
90  flattable_sequence = cms.Sequence( process.ecalPhiSymRecHitLumiTableEB +
91  process.ecalPhiSymRecHitLumiTableEE +
92  process.ecalPhiSymInfoLumiTable
93  )
94 
95  return flattable_sequence
const uint16_t range(const Frame &aFrame)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
#define str(s)
def EcalPhiSymRecoSequence_cff.ecal_phisym_output (   process,
  save_edm 
)

Definition at line 97 of file EcalPhiSymRecoSequence_cff.py.

Referenced by customise(), ecal_phisym_flattables(), and ecal_phisym_workflow().

97 
98  save_edm : bool=False,
99  save_edmnano : bool=False,
100  save_flatnano : bool=True):
101  """
102  Customize EcalPhiSym output
103  """
104 
105  outputs = []
106 
107  if save_flatnano or save_edmnano:
108  NanoAODEcalPhiSymEventContent = cms.PSet(
109  outputCommands = cms.untracked.vstring(
110  'drop *',
111  "keep nanoaod*_*_*_*", # event data
112  "keep nanoaodMergeableCounterTable_*Table_*_*", # accumulated per/run or per/lumi data
113  "keep nanoaodUniqueString_nanoMetadata_*_*", # basic metadata
114  )
115  )
116 
117  if save_flatnano:
118  process.nanoout = cms.OutputModule("NanoAODOutputModule",
119  fileName = cms.untracked.string('ecal_phisym_nano.root'),
120  outputCommands = NanoAODEcalPhiSymEventContent.outputCommands,
121  compressionLevel = cms.untracked.int32(9),
122  compressionAlgorithm = cms.untracked.string("LZMA"),
123  )
124  outputs.append(process.nanoout)
125 
126  if save_edmnano:
127  process.nanooutedm = cms.OutputModule("PoolOutputModule",
128  fileName = cms.untracked.string('ecal_phisym_edmnano.root'),
129  outputCommands = NanoAODEcalPhiSymEventContent.outputCommands,
130  )
131  outputs.append(process.nanooutedm)
132 
133  if save_edm:
134  ECALPHISYM_output_commands = cms.untracked.vstring(
135  "drop *",
136  "keep *_PhiSymProducerRun_*_*")
137 
138  process.EcalPhiSymOutput = cms.OutputModule("PoolOutputModule",
139  splitLevel = cms.untracked.int32(2),
140  compressionLevel = cms.untracked.int32(5),
141  compressionAlgorithm = cms.untracked.string('LZMA'),
142  outputCommands = ECALPHISYM_output_commands,
143  fileName = cms.untracked.string('ecal_phisym_reco.root')
144  )
145  outputs.append(process.EcalPhiSymOutput)
146 
147  return outputs
def EcalPhiSymRecoSequence_cff.ecal_phisym_reco_sequence (   process,
  produce_by_run 
)

Definition at line 29 of file EcalPhiSymRecoSequence_cff.py.

Referenced by ecal_phisym_workflow().

29 
30 def ecal_phisym_reco_sequence(process, produce_by_run : bool=False):
31  """
32  Customize process to include the EcalPhiSym standard reco sequence
33  """
34 
35  process.load('RecoLuminosity.LumiProducer.bunchSpacingProducer_cfi')
36  process.load('RecoLocalCalo.EcalRecProducers.ecalMultiFitUncalibRecHit_cfi')
37  process.load('RecoLocalCalo.EcalRecProducers.ecalUncalibRecHit_cfi')
38  process.load('RecoLocalCalo.EcalRecProducers.ecalRecHit_cfi')
39 
40  #ecalMultiFitUncalibRecHit
41  process.ecalMultiFitUncalibRecHit.EBdigiCollection = cms.InputTag("hltEcalPhiSymFilter","phiSymEcalDigisEB")
42  process.ecalMultiFitUncalibRecHit.EEdigiCollection = cms.InputTag("hltEcalPhiSymFilter","phiSymEcalDigisEE")
43 
44  #ecalRecHit (no ricovery)
45  process.ecalRecHit.killDeadChannels = cms.bool( False )
46  process.ecalRecHit.recoverEBVFE = cms.bool( False )
47  process.ecalRecHit.recoverEEVFE = cms.bool( False )
48  process.ecalRecHit.recoverEBFE = cms.bool( False )
49  process.ecalRecHit.recoverEEFE = cms.bool( False )
50  process.ecalRecHit.recoverEEIsolatedChannels = cms.bool( False )
51  process.ecalRecHit.recoverEBIsolatedChannels = cms.bool( False )
52 
53  # PHISYM producer
54  process.load('Calibration.EcalCalibAlgos.EcalPhiSymRecHitProducers_cfi')
55 
56  # SCHEDULE
57  reconstruction_step = cms.Sequence( process.bunchSpacingProducer * (process.ecalMultiFitUncalibRecHit + process.ecalRecHit) )
58  reconstruction_step *= process.EcalPhiSymRecHitProducerRun if produce_by_run else process.EcalPhiSymRecHitProducerLumi
59 
60  return reconstruction_step
def EcalPhiSymRecoSequence_cff.ecal_phisym_workflow (   process,
  produce_by_run 
)

Definition at line 5 of file EcalPhiSymRecoSequence_cff.py.

References ecal_phisym_flattables(), ecal_phisym_output(), and ecal_phisym_reco_sequence().

5 
6  produce_by_run : bool=False,
7  save_edm : bool=False,
8  save_edmnano : bool=False,
9  save_flatnano : bool=True):
10  """
11  Customize the process to include the entire EcalPhiSym workflow:
12  - ECAL local reco
13  - PhiSymRecHit producer
14  - EDM output (standard, EDMNANO, FlatNANO)
15  """
16 
17  reco = ecal_phisym_reco_sequence(process, produce_by_run=produce_by_run)
18  tables = ecal_phisym_flattables(process, produce_by_run=produce_by_run)
19  outputs = ecal_phisym_output(process,
20  save_edm=save_edm,
21  save_edmnano=save_edmnano,
22  save_flatnano=save_flatnano)
23 
24  process.path = cms.Path(reco*tables)
25  process.output_step = cms.EndPath()
26  for out in outputs:
27  process.output_step += out
28  process.schedule = cms.Schedule(process.path, process.output_step)