CMS 3D CMS Logo

Functions
EcalPhiSymRecoSequence_cff Namespace Reference

Functions

def customise (process)
 
def ecal_phisym_flattables
 
def ecal_phisym_output
 
def ecal_phisym_reco_sequence
 
def ecal_phisym_workflow
 

Function Documentation

◆ customise()

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().

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

◆ ecal_phisym_flattables()

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(), createfilelist.int, FastTimerService_cff.range, str, and common_cff.Var().

Referenced by ecal_phisym_workflow().

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

◆ ecal_phisym_output()

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

◆ ecal_phisym_reco_sequence()

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

◆ ecal_phisym_workflow()

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