The RecHit production consists in taking all the PSimHit's generated by the FamosSimHit producer, and applying a smearing to their position, according to the average resolution functions predicted by the GEANT-based simulation for single muons, for each of the pixel and silicon detector layers. This strategy has (as yet) several consequences:
Another piece of strategy specific to the FastSimulation is the RecHit ordering for subsequent use in the tracking. The fast version of the tracking used in the FastSimulation consists in fitting in turn all the RecHit's produced from PSimHit's belonging to a each SimTrack, hence dropping the need of the CPU-demanding pattern recognition. For this reason, the RecHit's are stored in a RangeMap< unsigned TrackId, OwnVector< RecHit > >, where TrackId refers to the index of the corresponding SimTrack in the SimTrackContainer, instead of in a RangeMap< DetId, OwnVector< RecHit > >. For the full pattern recognition to be used in the FastSimulation (this option is not yet implemented), a translator to the original map is also available.
Finally, the RecHit's produced by the TrackingRecHitProducer are (at the time of writing) not identical to the RecHit's produced by the GEANT-based simulation. Indeed, the latter have a pointer to the correponding digi (a cluster of strips or pixels), which the FastSimulation does not simulate. This is the main reason why the full pattern recognition option is not yet implemented, as it expects such RecHit's to properly operate. Thoughts are currently going on to overcome this modest issue.
The random number initialization for this step is included as follows,
untracked uint32 siTrackerGaussianSmearingRecHits = 24680together with the following .cfi include file:
# Gaussian Smearing RecHit producer FastSimulation/TrackingRecHitProducer/data/SiTrackerGaussianSmearingRecHitConverter.cfiitself included in
FastSimulation/Configuration/data/FamosSequences.cff
The parameters used for the Tracker RecHit production are as follows:
module siTrackerGaussianSmearingRecHits = SiTrackerGaussianSmearingRecHitConverter { # FAMOS RecHit name vstring ROUList = {"TrackerHits"} # The smallest pT for which RecHit are created double DeltaRaysMomentumCut = 0.5 # the default is 0.5 GeV/c # The verbosity level untracked int32 VerboseLevel = 2 // If you want to have RecHits == PSimHits (tracking with PSimHits) bool trackingPSimHits = false # the default is false // Needed to compute Pixel Errors string PixelErrorParametrization = "NOTcmsim" // Pixel string PixelMultiplicityFile = "FastSimulation/TrackingRecHitProducer/data/PixelData.root" string PixelBarrelResolutionFile = "FastSimulation/TrackingRecHitProducer/data/PixelBarrelResolution.root" string PixelForwardResolutionFile = "FastSimulation/TrackingRecHitProducer/data/PixelForwardResolution.root" int32 AlphaBarrelMultiplicity = 4 int32 BetaBarrelMultiplicity = 6 int32 AlphaForwardMultiplicity = 3 int32 BetaForwardMultiplicity = 3 double AlphaBarrel_BinMin = -0.2 double AlphaBarrel_BinWidth = 0.1 int32 AlphaBarrel_BinN = 4 double BetaBarrel_BinMin = 0.0 double BetaBarrel_BinWidth = 0.2 int32 BetaBarrel_BinN = 7 double AlphaForward_BinMin = 0.0 double AlphaForward_BinWidth = 0.0 int32 AlphaForward_BinN = 0 double BetaForward_BinMin = 0.0 double BetaForward_BinWidth = 0.0 int32 BetaForward_BinN = 0 // TIB double TIB1x = 0.00195 double TIB1y = 3.3775 // 11.7/sqrt(12.) double TIB2x = 0.00191 double TIB2y = 3.3775 // 11.7/sqrt(12.) double TIB3x = 0.00325 double TIB3y = 3.3775 // 11.7/sqrt(12.) double TIB4x = 0.00323 double TIB4y = 3.3775 // 11.7/sqrt(12.) // TID double TID1x = 0.00262 double TID1y = 3.6662 // 12.7/sqrt(12.) double TID2x = 0.00354 double TID2y = 3.6662 // 12.7/sqrt(12.) double TID3x = 0.00391 double TID3y = 3.4352 // 11.9/sqrt(12.) // TOB double TOB1x = 0.00461 double TOB1y = 5.2836 // 2*9.1514/sqrt(12.) double TOB2x = 0.00458 double TOB2y = 5.2836 // 2*9.1514/sqrt(12.) double TOB3x = 0.00488 double TOB3y = 5.2836 // 2*9.1514/sqrt(12.) double TOB4x = 0.00491 double TOB4y = 5.2836 // 2*9.1514/sqrt(12.) double TOB5x = 0.00293 double TOB5y = 5.2836 // 2*9.1514/sqrt(12.) double TOB6x = 0.00299 double TOB6y = 5.2836 // 2*9.1514/sqrt(12.) // TEC double TEC1x = 0.00262 double TEC1y = 3.6662 // 12.7/sqrt(12.) double TEC2x = 0.00354 double TEC2y = 3.6662 // 12.7/sqrt(12.) double TEC3x = 0.00391 double TEC3y = 3.4352 // 11.9/sqrt(12.) double TEC4x = 0.00346 double TEC4y = 3.4930 // 12.1/sqrt(12.) double TEC5x = 0.00378 double TEC5y = 7.1014 // 2*12.3/sqrt(12.) double TEC6x = 0.00508 double TEC6y = 6.8704 // 2*11.9/sqrt(12.) double TEC7x = 0.00422 double TEC7y = 6.9859 // 2*12.1/sqrt(12.) // Hit Finding Probabilities double HitFindingProbability_PXB = 1.00 double HitFindingProbability_PXF = 1.00 double HitFindingProbability_TIB1 = 1.00 double HitFindingProbability_TIB2 = 1.00 double HitFindingProbability_TIB3 = 1.00 double HitFindingProbability_TIB4 = 1.00 double HitFindingProbability_TID1 = 1.00 double HitFindingProbability_TID2 = 1.00 double HitFindingProbability_TID3 = 1.00 double HitFindingProbability_TOB1 = 1.00 double HitFindingProbability_TOB2 = 1.00 double HitFindingProbability_TOB3 = 1.00 double HitFindingProbability_TOB4 = 1.00 double HitFindingProbability_TOB5 = 1.00 double HitFindingProbability_TOB6 = 1.00 double HitFindingProbability_TEC1 = 1.00 double HitFindingProbability_TEC2 = 1.00 double HitFindingProbability_TEC3 = 1.00 double HitFindingProbability_TEC4 = 1.00 double HitFindingProbability_TEC5 = 1.00 double HitFindingProbability_TEC6 = 1.00 double HitFindingProbability_TEC7 = 1.00 // }
The general steering of the RecHit smearing is done with the first four parameters:
ROUList
is the list of names given to the tracker RecHit's. Unlike in the GEANT-based simulation, only one name is given to the whole collection (the names of hits coming from the GEANT-based simulation are among "TrackerHitsPixelBarrelLowTof","TrackerHitsPixelBarrelHighTof"
, "TrackerHitsPixelEndcapLowTof","TrackerHitsPixelEndcapHighTof"
, "TrackerHitsTIBLowTof"
, "TrackerHitsTIBHighTof"
, "TrackerHitsTIDLowTof"
, "TrackerHitsTIDHighTof"
, "TrackerHitsTOBLowTof"
, "TrackerHitsTOBHighTof"
, "TrackerHitsTECLowTof"
, "TrackerHitsTECHighTof"
, "TrackerHitsPixelBarrelLowTof"
, "TrackerHitsPixelBarrelHighTof"
, "TrackerHitsPixelEndcapLowTof"
, and "TrackerHitsPixelEndcapHighTof"
. Should this list of names be needed for such or such use case not thought of yet, it'd be implemented immediately in the FastSimulation.
DeltaRaysMomentumCut
is the smallest SimTrack pT (in GeV/c) for which RecHit's will be created. Note that PSimHit's are created by the FamosSimHit producer only abouve a certain pT cut too (set by default to 0.8 GeV/c). No RecHit's will therefore be produced below the larger of the cut values.
VerboseLevel
is the verbosity level and is certainly meant for experts only. It is set by default to 2, for which I see no output. (I'll check later if this parameter has an effect at all in the present version of the code... if not, it'll be simply removed.)
trackingPSimHits
,when set to true
, return RecHit's at the exact same position as the original PSimHit's. It allows for detailed studies of effects other than the detector resolution (such as the effects of the interaction in the tracker material or, when the latter are also turned off, the effect of the tracking algorithm on perfect hits).
The other parameters are specific to either the Pixel or to the Silicon-Strip RecHit's, and are described in turn below.
The Pixel RecHit smearing is perfomed according to the (RecHit-SimHit) position distributions obtained from the GEANT-based simulation for single muons of 100 GeV/c. These distributions are saved in three files, configurable thorugh the above configuration file:
string PixelMultiplicityFile = "FastSimulation/TrackingRecHitProducer/data/PixelData.root"
contains the probability density functions of the local track angles alpha and beta (determined locally with respect to the pixel modules) for cluster sizes going from 1 to n pixels in the two directions, for the barrel and the forward modules independently. For a given track hitting a given pixel module, the local angles alpha and beta are known, and the cluster sizes (size_x and size_y) may be randomly obtained from these pdf's. The largest cluster sizes (n) in the two directions are given by
int32 AlphaBarrelMultiplicity = 4 int32 BetaBarrelMultiplicity = 6 int32 AlphaForwardMultiplicity = 3 int32 BetaForwardMultiplicity = 3
string PixelBarrelResolutionFile = "FastSimulation/TrackingRecHitProducer/data/PixelBarrelResolution.root"
contains the RecHit resolution functions in the pixel barrel. For each of the cluster sizes along x (or y), and for a given bin in alpha (or beta), the RecHit-!SimHit) position distribution obtained from the GEANT-based simulation is read from a root histogram, the id of which is 100 * alphabin + size_x (or 100*betabin + size_y), and the RecHit position is obtained from the SimHit position smeared according to this distribution. The number of alpha/beta bins, and their values/widths, are configured in the configuration file as
double AlphaBarrel_BinMin = -0.2 double AlphaBarrel_BinWidth = 0.1 int32 AlphaBarrel_BinN = 4 double BetaBarrel_BinMin = 0.0 double BetaBarrel_BinWidth = 0.2 int32 BetaBarrel_BinN = 7
string PixelForwardResolutionFile = "FastSimulation/TrackingRecHitProducer/data/PixelForwardResolution.root"
is the same as above, but for the forward pixel, and its use is identical. The alpha and beta values span a much smaller range than in the barrel. There is therefore only one resolution function saved for each cluster size in the two directions.
The probability to form a RecHit from a SimHit is currently set to 100% (needs to be tuned to the GEANT-based simulation), but can be modified with the following two configurable parameters:
double HitFindingProbability_PXB = 1.00 double HitFindingProbability_PXF = 1.00Finally, the RecHit position is checked to stay on the module's physical module hit by the track, after the SimHit smearing. In case it does not, a new random smearing is tried until it does.
Note: The resolution functions are, at the time of writing, still coming from OSCAR/ORCA-simulated muons. A campaign is currently going on to produce these distributions with the improved geometry and algorithms of the CMSSW GEANT-based simulation.
The smearing of the SimHits in the SiStrip Tracker is very similar to that in the Pixel detector, with only difference that the resolution functions are assumed to be Gaussian, with an average layer-by-layer sigma. The latter is determined for all mono and stereo layers, in the direction perpendicular to the strips (i.e., the x direction). The RecHit stays at the centre of the strip in the longitudinal direction. The averaged standard deviations, obtained from COBRA/ORCA for the time being, are configurable with the following parameters:
double TIB1x = 0.00195 double TIB2x = 0.00191 double TIB3x = 0.00325 double TIB4x = 0.00323 double TID1x = 0.00262 double TID2x = 0.00354 double TID3x = 0.00391 double TOB1x = 0.00461 double TOB2x = 0.00458 double TOB3x = 0.00488 double TOB4x = 0.00491 double TOB5x = 0.00293 double TOB6x = 0.00299 double TEC1x = 0.00262 double TEC2x = 0.00354 double TEC3x = 0.00391 double TEC4x = 0.00346 double TEC5x = 0.00378 double TEC6x = 0.00508 double TEC7x = 0.00422
As for the pixel hits, the probability to form a RecHit from a SimHit is currently set to 100% (needs to be tuned to the GEANT-based simulation), but can be modified with configurable parameters, as shown above. Finally, the RecHit position is checked to stay on the module's physical module hit by the track, after the SimHit smearing. In case it does not, a new random smearing is tried until it does.
Note: A campaign is currently going on to check whether this Gaussian approximation is accurate enough, or if an approach similar to that of the pixel detector (with resolution functions depending on the cluster size and on the track direction) would substantially improve the overall picture - already very good.
Reviewer/Editor and Date (copy from screen) | Comments |
---|---|
PatrickJanot - 18 June 2007 | Add Pixel and SiStrip hit smearing documentation |
PatrickJanot - 29 May 2007 | Describe the general strategy and the general steering |
JennyWilliams - 01 May 2007 | created template page |
Responsible: AndreaGiammanco
Last reviewed by: Reviewer