CMS 3D CMS Logo

InitialStep_cff.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 from Configuration.Eras.Modifier_tracker_apv_vfp30_2016_cff import tracker_apv_vfp30_2016 as _tracker_apv_vfp30_2016
3 from Configuration.Eras.Modifier_fastSim_cff import fastSim
4 
5 #for dnn classifier
6 from Configuration.ProcessModifiers.trackdnn_cff import trackdnn
7 
8 ### STEP 0 ###
9 
10 # hit building
13 
14 # SEEDING LAYERS
16 import RecoTracker.TkSeedingLayers.PixelLayerQuadruplets_cfi
17 initialStepSeedLayers = RecoTracker.TkSeedingLayers.PixelLayerTriplets_cfi.PixelLayerTriplets.clone()
18 from Configuration.Eras.Modifier_trackingPhase1_cff import trackingPhase1
19 trackingPhase1.toModify(initialStepSeedLayers,
20  layerList = RecoTracker.TkSeedingLayers.PixelLayerQuadruplets_cfi.PixelLayerQuadruplets.layerList.value()
21 )
22 trackingPhase2PU140.toModify(initialStepSeedLayers,
23  layerList = RecoTracker.TkSeedingLayers.PixelLayerQuadruplets_cfi.PixelLayerQuadruplets.layerList.value()
24 )
25 
26 # TrackingRegion
27 from RecoTracker.TkTrackingRegions.globalTrackingRegionFromBeamSpot_cfi import globalTrackingRegionFromBeamSpot as _globalTrackingRegionFromBeamSpot
28 initialStepTrackingRegions = _globalTrackingRegionFromBeamSpot.clone(RegionPSet = dict(
29  ptMin = 0.6,
30  originRadius = 0.02,
31  nSigmaZ = 4.0
32 ))
33 from Configuration.Eras.Modifier_trackingPhase2PU140_cff import trackingPhase2PU140
34 trackingPhase1.toModify(initialStepTrackingRegions, RegionPSet = dict(ptMin = 0.5))
35 from Configuration.Eras.Modifier_highBetaStar_2018_cff import highBetaStar_2018
36 highBetaStar_2018.toModify(initialStepTrackingRegions,RegionPSet = dict(
37  ptMin = 0.05,
38  originRadius = 0.2
39 ))
40 trackingPhase2PU140.toModify(initialStepTrackingRegions, RegionPSet = dict(ptMin = 0.6,originRadius = 0.03))
41 
42 # seeding
43 from RecoTracker.TkHitPairs.hitPairEDProducer_cfi import hitPairEDProducer as _hitPairEDProducer
44 initialStepHitDoublets = _hitPairEDProducer.clone(
45  seedingLayers = "initialStepSeedLayers",
46  trackingRegions = "initialStepTrackingRegions",
47  maxElement = 50000000,
48  produceIntermediateHitDoublets = True,
49 )
50 from RecoPixelVertexing.PixelTriplets.pixelTripletHLTEDProducer_cfi import pixelTripletHLTEDProducer as _pixelTripletHLTEDProducer
52 import RecoPixelVertexing.PixelLowPtUtilities.LowPtClusterShapeSeedComparitor_cfi
53 initialStepHitTriplets = _pixelTripletHLTEDProducer.clone(
54  doublets = "initialStepHitDoublets",
55  produceSeedingHitSets = True,
56  SeedComparitorPSet = RecoPixelVertexing.PixelLowPtUtilities.LowPtClusterShapeSeedComparitor_cfi.LowPtClusterShapeSeedComparitor.clone()
57 )
58 from RecoTracker.TkSeedGenerator.seedCreatorFromRegionConsecutiveHitsEDProducer_cff import seedCreatorFromRegionConsecutiveHitsEDProducer as _seedCreatorFromRegionConsecutiveHitsEDProducer
59 initialStepSeeds = _seedCreatorFromRegionConsecutiveHitsEDProducer.clone(
60  seedingHitSets = "initialStepHitTriplets",
61 )
62 from RecoPixelVertexing.PixelTriplets.caHitQuadrupletEDProducer_cfi import caHitQuadrupletEDProducer as _caHitQuadrupletEDProducer
63 _initialStepCAHitQuadruplets = _caHitQuadrupletEDProducer.clone(
64  doublets = "initialStepHitDoublets",
65  extraHitRPhitolerance = initialStepHitTriplets.extraHitRPhitolerance,
66  SeedComparitorPSet = initialStepHitTriplets.SeedComparitorPSet,
67  maxChi2 = dict(
68  pt1 = 0.7, pt2 = 2,
69  value1 = 200, value2 = 50,
70  ),
71  useBendingCorrection = True,
72  fitFastCircle = True,
73  fitFastCircleChi2Cut = True,
74  CAThetaCut = 0.0012,
75  CAPhiCut = 0.2,
76 )
77 highBetaStar_2018.toModify(_initialStepCAHitQuadruplets,
78  CAThetaCut = 0.0024,
79  CAPhiCut = 0.4
80 )
81 initialStepHitQuadruplets = _initialStepCAHitQuadruplets.clone()
82 
83 trackingPhase1.toModify(initialStepHitDoublets, layerPairs = [0,1,2]) # layer pairs (0,1), (1,2), (2,3)
84 
85 trackingPhase2PU140.toModify(initialStepHitDoublets, layerPairs = [0,1,2]) # layer pairs (0,1), (1,2), (2,3)
86 trackingPhase2PU140.toModify(initialStepHitQuadruplets,
87  CAThetaCut = 0.0010,
88  CAPhiCut = 0.175,
89 )
90 
91 from RecoTracker.TkSeedGenerator.seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer_cff import seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer as _seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer
92 _initialStepSeedsConsecutiveHitsTripletOnly = _seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer.clone(
93  seedingHitSets = "initialStepHitTriplets",
94  SeedComparitorPSet = dict(# FIXME: is this defined in any cfi that could be imported instead of copy-paste?
95  ComponentName = 'PixelClusterShapeSeedComparitor',
96  FilterAtHelixStage = cms.bool(False),
97  FilterPixelHits = cms.bool(True),
98  FilterStripHits = cms.bool(False),
99  ClusterShapeHitFilterName = cms.string('ClusterShapeHitFilter'),
100  ClusterShapeCacheSrc = cms.InputTag('siPixelClusterShapeCache')
101  ),
102 )
103 trackingPhase1.toReplaceWith(initialStepSeeds, _initialStepSeedsConsecutiveHitsTripletOnly.clone(
104  seedingHitSets = "initialStepHitQuadruplets"
105 ))
106 trackingPhase2PU140.toReplaceWith(initialStepSeeds, _initialStepSeedsConsecutiveHitsTripletOnly.clone(
107  seedingHitSets = "initialStepHitQuadruplets"
108 ))
109 import FastSimulation.Tracking.TrajectorySeedProducer_cfi
110 from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet
111 _fastSim_initialStepSeeds = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone(
112  trackingRegions = "initialStepTrackingRegions",
113  seedFinderSelector = dict( pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(initialStepHitTriplets),
114  layerList = initialStepSeedLayers.layerList.value())
115 )
116 _fastSim_initialStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory.SeedComparitorPSet.ComponentName = "none"
117 #new for phase1
118 trackingPhase1.toModify(_fastSim_initialStepSeeds, seedFinderSelector = dict(
119  pixelTripletGeneratorFactory = None,
120  CAHitQuadrupletGeneratorFactory = _hitSetProducerToFactoryPSet(initialStepHitQuadruplets).clone(SeedComparitorPSet = dict(ComponentName = "none")),
121  #new parameters required for phase1 seeding
122  BPix = dict(
123  TTRHBuilder = 'WithoutRefit',
124  HitProducer = 'TrackingRecHitProducer',
125  ),
126  FPix = dict(
127  TTRHBuilder = 'WithoutRefit',
128  HitProducer = 'TrackingRecHitProducer',
129  ),
130  layerPairs = initialStepHitDoublets.layerPairs.value()
131  )
132 )
133 
134 fastSim.toReplaceWith(initialStepSeeds,_fastSim_initialStepSeeds)
135 
136 
137 # building
139 _initialStepTrajectoryFilterBase = TrackingTools.TrajectoryFiltering.TrajectoryFilter_cff.CkfBaseTrajectoryFilter_block.clone(
140  minimumNumberOfHits = 3,
141  minPt = 0.2,
142 )
143 initialStepTrajectoryFilterBase = _initialStepTrajectoryFilterBase.clone(
144  maxCCCLostHits = 0,
145  minGoodStripCharge = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutLoose'))
146 )
147 from Configuration.Eras.Modifier_tracker_apv_vfp30_2016_cff import tracker_apv_vfp30_2016
148 _tracker_apv_vfp30_2016.toModify(initialStepTrajectoryFilterBase, maxCCCLostHits = 2)
149 
150 from Configuration.Eras.Modifier_pp_on_XeXe_2017_cff import pp_on_XeXe_2017
151 from Configuration.Eras.Modifier_pp_on_AA_2018_cff import pp_on_AA_2018
152 for e in [pp_on_XeXe_2017, pp_on_AA_2018]:
153  e.toModify(initialStepTrajectoryFilterBase, minPt=0.6)
154 highBetaStar_2018.toModify(initialStepTrajectoryFilterBase, minPt = 0.05)
155 
156 initialStepTrajectoryFilterInOut = initialStepTrajectoryFilterBase.clone(
157  minimumNumberOfHits = 4,
158  seedExtension = 1,
159  strictSeedExtension = True, # don't allow inactive
160  pixelSeedExtension = True,
161 )
162 from Configuration.Eras.Modifier_trackingLowPU_cff import trackingLowPU
163 trackingLowPU.toReplaceWith(initialStepTrajectoryFilterBase, _initialStepTrajectoryFilterBase)
164 trackingPhase2PU140.toReplaceWith(initialStepTrajectoryFilterBase, _initialStepTrajectoryFilterBase)
165 
166 import RecoPixelVertexing.PixelLowPtUtilities.StripSubClusterShapeTrajectoryFilter_cfi
167 initialStepTrajectoryFilterShape = RecoPixelVertexing.PixelLowPtUtilities.StripSubClusterShapeTrajectoryFilter_cfi.StripSubClusterShapeTrajectoryFilterTIX12.clone()
168 initialStepTrajectoryFilter = cms.PSet(
169  ComponentType = cms.string('CompositeTrajectoryFilter'),
170  filters = cms.VPSet(
171  cms.PSet( refToPSet_ = cms.string('initialStepTrajectoryFilterBase')),
172  # cms.PSet( refToPSet_ = cms.string('initialStepTrajectoryFilterShape'))
173  ),
174 )
175 
176 trackingPhase2PU140.toReplaceWith(initialStepTrajectoryFilter, TrackingTools.TrajectoryFiltering.TrajectoryFilter_cff.CkfBaseTrajectoryFilter_block.clone(
177  minimumNumberOfHits = 3,
178  minPt = 0.2
179  )
180 )
181 import RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi
182 initialStepChi2Est = RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi.Chi2ChargeMeasurementEstimator.clone(
183  ComponentName = cms.string('initialStepChi2Est'),
184  nSigma = cms.double(3.0),
185  MaxChi2 = cms.double(30.0),
186  clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutLoose')),
187  pTChargeCutThreshold = cms.double(15.)
188 )
189 _tracker_apv_vfp30_2016.toModify(initialStepChi2Est,
190  clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutTiny")
191 )
192 trackingPhase2PU140.toModify(initialStepChi2Est,
193  clusterChargeCut = dict(refToPSet_ = 'SiStripClusterChargeCutNone'),
194 )
195 
196 
198 initialStepTrajectoryBuilder = RecoTracker.CkfPattern.GroupedCkfTrajectoryBuilder_cfi.GroupedCkfTrajectoryBuilder.clone(
199  trajectoryFilter = cms.PSet(refToPSet_ = cms.string('initialStepTrajectoryFilter')),
200  alwaysUseInvalidHits = True,
201  maxCand = 3,
202  estimator = cms.string('initialStepChi2Est'),
203  maxDPhiForLooperReconstruction = cms.double(2.0),
204  maxPtForLooperReconstruction = cms.double(0.7)
205  )
206 trackingLowPU.toModify(initialStepTrajectoryBuilder, maxCand = 5)
207 trackingPhase1.toModify(initialStepTrajectoryBuilder,
208  minNrOfHitsForRebuild = 1,
209  keepOriginalIfRebuildFails = True,
210 )
211 trackingPhase2PU140.toModify(initialStepTrajectoryBuilder,
212  minNrOfHitsForRebuild = 1,
213  keepOriginalIfRebuildFails = True,
214 )
215 
217 initialStepTrackCandidates = RecoTracker.CkfPattern.CkfTrackCandidates_cfi.ckfTrackCandidates.clone(
218  src = cms.InputTag('initialStepSeeds'),
219  ### these two parameters are relevant only for the CachingSeedCleanerBySharedInput
220  numHitsForSeedCleaner = cms.int32(50),
221  onlyPixelHitsForSeedCleaner = cms.bool(True),
222  TrajectoryBuilderPSet = cms.PSet(refToPSet_ = cms.string('initialStepTrajectoryBuilder')),
223  doSeedingRegionRebuilding = True,
224  useHitsSplitting = True
225  )
226 
227 import FastSimulation.Tracking.TrackCandidateProducer_cfi
228 fastSim.toReplaceWith(initialStepTrackCandidates,
229  FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone(
230  src = cms.InputTag("initialStepSeeds"),
231  MinNumberOfCrossedLayers = 3
232  ))
233 
234 
235 # fitting
237 initialStepTracks = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone(
238  src = 'initialStepTrackCandidates',
239  AlgorithmName = cms.string('initialStep'),
240  Fitter = cms.string('FlexibleKFFittingSmoother')
241  )
242 fastSim.toModify(initialStepTracks, TTRHBuilder = 'WithoutRefit')
243 
244 #vertices
245 from RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi import offlinePrimaryVertices as _offlinePrimaryVertices
246 firstStepPrimaryVerticesUnsorted = _offlinePrimaryVertices.clone()
247 firstStepPrimaryVerticesUnsorted.TrackLabel = cms.InputTag("initialStepTracks")
248 firstStepPrimaryVerticesUnsorted.vertexCollections = [_offlinePrimaryVertices.vertexCollections[0].clone()]
249 
250 from Configuration.Eras.Modifier_pp_on_XeXe_2017_cff import pp_on_XeXe_2017
251 from Configuration.Eras.Modifier_pp_on_AA_2018_cff import pp_on_AA_2018
252 (pp_on_XeXe_2017 | pp_on_AA_2018).toModify(firstStepPrimaryVerticesUnsorted, TkFilterParameters = dict(trackQuality = "any"))
253 
254 # we need a replacment for the firstStepPrimaryVerticesUnsorted
255 # that includes tracker information of signal and pile up
256 # after mixing there is no such thing as initialStepTracks,
257 # so we replace the input collection for firstStepPrimaryVerticesUnsorted with generalTracks
258 firstStepPrimaryVerticesBeforeMixing = firstStepPrimaryVerticesUnsorted.clone()
259 fastSim.toModify(firstStepPrimaryVerticesUnsorted, TrackLabel = "generalTracks")
260 
261 
262 from RecoJets.JetProducers.TracksForJets_cff import trackRefsForJets
263 initialStepTrackRefsForJets = trackRefsForJets.clone(src = cms.InputTag('initialStepTracks'))
264 fastSim.toModify(initialStepTrackRefsForJets, src = "generalTracks")
266 from CommonTools.RecoAlgos.sortedPrimaryVertices_cfi import sortedPrimaryVertices as _sortedPrimaryVertices
267 firstStepPrimaryVertices = _sortedPrimaryVertices.clone(
268  vertices = "firstStepPrimaryVerticesUnsorted",
269  particles = "initialStepTrackRefsForJets",
270 )
271 
272 
273 # Final selection
276 
277 initialStepClassifier1 = TrackMVAClassifierPrompt.clone()
278 initialStepClassifier1.src = 'initialStepTracks'
279 initialStepClassifier1.mva.GBRForestLabel = 'MVASelectorIter0_13TeV'
280 initialStepClassifier1.qualityCuts = [-0.9,-0.8,-0.7]
281 fastSim.toModify(initialStepClassifier1,vertices = "firstStepPrimaryVerticesBeforeMixing")
282 
283 from RecoTracker.IterativeTracking.DetachedTripletStep_cff import detachedTripletStepClassifier1
284 from RecoTracker.IterativeTracking.LowPtTripletStep_cff import lowPtTripletStep
285 initialStepClassifier2 = detachedTripletStepClassifier1.clone()
286 initialStepClassifier2.src = 'initialStepTracks'
287 fastSim.toModify(initialStepClassifier2,vertices = "firstStepPrimaryVerticesBeforeMixing")
288 initialStepClassifier3 = lowPtTripletStep.clone()
289 initialStepClassifier3.src = 'initialStepTracks'
290 fastSim.toModify(initialStepClassifier3,vertices = "firstStepPrimaryVerticesBeforeMixing")
291 
293 initialStep = ClassifierMerger.clone()
294 initialStep.inputClassifiers=['initialStepClassifier1','initialStepClassifier2','initialStepClassifier3']
295 
296 trackingPhase1.toReplaceWith(initialStep, initialStepClassifier1.clone(
297  mva = dict(GBRForestLabel = 'MVASelectorInitialStep_Phase1'),
298  qualityCuts = [-0.95,-0.85,-0.75]
299 ))
300 
303 trackdnn.toReplaceWith(initialStep, TrackLwtnnClassifier.clone(
304  src = 'initialStepTracks',
305  qualityCuts = [0.0, 0.3, 0.6]
306 ))
307 (trackdnn & fastSim).toModify(initialStep,vertices = "firstStepPrimaryVerticesBeforeMixing")
308 
309 pp_on_AA_2018.toModify(initialStep,
310  mva = dict(GBRForestLabel = 'HIMVASelectorInitialStep_Phase1'),
311  qualityCuts = [-0.9, -0.5, 0.2],
312 )
313 
314 # For LowPU and Phase2PU140
315 import RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi
316 initialStepSelector = RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
317  src = 'initialStepTracks',
318  useAnyMVA = cms.bool(False),
319  GBRForestLabel = cms.string('MVASelectorIter0'),
320  trackSelectors = [
321  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
322  name = 'initialStepLoose',
323  ), #end of pset
324  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
325  name = 'initialStepTight',
326  preFilterName = 'initialStepLoose',
327  ),
328  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
329  name = 'QualityMasks',
330  preFilterName = 'initialStepTight',
331  ),
332  ] #end of vpset
333 ) #end of clone
334 trackingPhase2PU140.toModify(initialStepSelector,
335  useAnyMVA = None,
336  GBRForestLabel = None,
337  trackSelectors= cms.VPSet(
338  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
339  name = 'initialStepLoose',
340  chi2n_par = 2.0,
341  res_par = ( 0.003, 0.002 ),
342  minNumberLayers = 3,
343  maxNumberLostLayers = 3,
344  minNumber3DLayers = 3,
345  d0_par1 = ( 0.8, 4.0 ),
346  dz_par1 = ( 0.9, 4.0 ),
347  d0_par2 = ( 0.6, 4.0 ),
348  dz_par2 = ( 0.8, 4.0 )
349  ), #end of pset
350  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
351  name = 'initialStepTight',
352  preFilterName = 'initialStepLoose',
353  chi2n_par = 1.4,
354  res_par = ( 0.003, 0.002 ),
355  minNumberLayers = 3,
356  maxNumberLostLayers = 2,
357  minNumber3DLayers = 3,
358  d0_par1 = ( 0.7, 4.0 ),
359  dz_par1 = ( 0.8, 4.0 ),
360  d0_par2 = ( 0.5, 4.0 ),
361  dz_par2 = ( 0.7, 4.0 )
362  ),
363  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
364  name = 'initialStep',
365  preFilterName = 'initialStepTight',
366  chi2n_par = 1.2,
367  res_par = ( 0.003, 0.001 ),
368  minNumberLayers = 3,
369  maxNumberLostLayers = 2,
370  minNumber3DLayers = 3,
371  d0_par1 = ( 0.6, 4.0 ),
372  dz_par1 = ( 0.7, 4.0 ),
373  d0_par2 = ( 0.45, 4.0 ),
374  dz_par2 = ( 0.55, 4.0 )
375  ),
376  ), #end of vpset
377 ) #end of clone
378 
379 
380 
381 # Final sequence
382 InitialStepTask = cms.Task(initialStepSeedLayers,
383  initialStepTrackingRegions,
384  initialStepHitDoublets,
385  initialStepHitTriplets,
386  initialStepSeeds,
387  initialStepTrackCandidates,
388  initialStepTracks,
389  firstStepPrimaryVerticesUnsorted,
390  initialStepTrackRefsForJets,
391  firstStepPrimaryVertices,
392  initialStepClassifier1,initialStepClassifier2,initialStepClassifier3,
393  initialStep,caloJetsForTrkTask)
394 InitialStep = cms.Sequence(InitialStepTask)
395 
396 _InitialStepTask_LowPU = InitialStepTask.copyAndExclude([firstStepPrimaryVerticesUnsorted, initialStepTrackRefsForJets, caloJetsForTrkTask, firstStepPrimaryVertices, initialStepClassifier1, initialStepClassifier2, initialStepClassifier3])
397 _InitialStepTask_LowPU.replace(initialStep, initialStepSelector)
398 trackingLowPU.toReplaceWith(InitialStepTask, _InitialStepTask_LowPU)
399 
400 _InitialStepTask_Phase1 = InitialStepTask.copyAndExclude([initialStepClassifier2, initialStepClassifier3])
401 _InitialStepTask_Phase1.replace(initialStepHitTriplets, initialStepHitQuadruplets)
402 trackingPhase1.toReplaceWith(InitialStepTask, _InitialStepTask_Phase1)
403 
404 _InitialStepTask_trackingPhase2 = InitialStepTask.copyAndExclude([initialStepClassifier1, initialStepClassifier2, initialStepClassifier3])
405 _InitialStepTask_trackingPhase2.replace(initialStepHitTriplets, initialStepHitQuadruplets)
406 _InitialStepTask_trackingPhase2.replace(initialStep, initialStepSelector)
407 trackingPhase2PU140.toReplaceWith(InitialStepTask, _InitialStepTask_trackingPhase2)
408 
409 from Configuration.Eras.Modifier_fastSim_cff import fastSim
410 _InitialStepTask_fastSim = cms.Task(initialStepTrackingRegions
411  ,initialStepSeeds
412  ,initialStepTrackCandidates
413  ,initialStepTracks
414  ,firstStepPrimaryVerticesBeforeMixing
415  ,initialStepClassifier1,initialStepClassifier2,initialStepClassifier3
416  ,initialStep
417  )
418 fastSim.toReplaceWith(InitialStepTask, _InitialStepTask_fastSim)
COSMIC RUN SETTING.
def _hitSetProducerToFactoryPSet(producer)
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135