14     """Return component accumulator with configured Tile digits from pulse algorithm 
   17         flags  -- Athena configuration flags 
   19         OutputDigitsContainer         -- Name of container with TileDigits to write 
   20         ImperfectionMean              -- Mean value of pulse shape broadening 
   21         ImperfectionRMS               -- RMS of pulse shape broadening 
   22         InTimeAmp                     -- Amplitude of in-time pulse 
   23         OutOfTimeAmp                  -- Amplitude of out-of-time pulse 
   24         InTimeOffset                  -- In-time pulse offset from nominal time 
   25         OutOfTimeOffset               -- Out-of-time pulse offset from nominal time 
   26         UseGaussNoise                 -- Set to TRUE in order to create noise from double gaussian 
   27         GaussNoiseAmpOne              -- Amplitude of first gaussian of double gaussian noise 
   28         GaussNoiseSigmaOne            -- Standard deviation of first gaussian of double gaussian noise 
   29         GaussNoiseAmpTwo              -- Amplitude of second gaussian of double gaussian noise 
   30         GaussNoiseSigmaTwo            -- Standard deviation of second gaussian of double gaussian noise 
   31         UseInTimeAmpDist              -- Set to TRUE in order to use a distribution for the in-time amplitude instead of a const. 
   32         UseOutOfTimeAmpDist           -- Set to TRUE in order to use a distribution for the out-of-time amplitude instead of a const 
   33         InTimeAmpDistFileName         -- Filename of file to use for amplitude distribution of in-time pulses 
   34         InTimeAmpDistHistogramName    -- Name of the histogram to use for in-time amplitude distribution 
   35         InTimeAmpPulseProb            -- Probability to add an in-time pulse 
   36         OutOfTimeAmpDistFileName      -- Filename of file to use for amplitude distribution of out-of-time pulses 
   37         InTimeAmpPulseProb            -- Probability to add an in-time pulse 
   38         PileUpFraction                -- Probability that an out-of-time component will be added 
   39         GaussianC2CPhaseVariation     -- RMS for the in-time pulse offset (channel-to-channel phase variation) 
   40         ChannelSpecificPedestal       -- Set to TRUE in order to use a channel specific value for the pedestal 
   41         ChannelSpecificNoise          -- Set to TRUE in order to add channel specific noise 
   42         OutOfTimeOffsetHistogramFile  -- Filename of file containing histogram of pile-up timing distribution 
   43         OutOfTimeOffsetHistogramName  -- Name of the histogram to use for pile-up timing distribution 
   44         AmpDistLowerLimit             -- Set all bins lower than this to zero. Default = 135 
   45         PedestalValueHG               -- Pedestal in HG if not taken from database 
   46         PedestalValueLG               -- Pedestal in LG if not taken from database 
   47         SimulatePileUpWithPoiss       -- Simulate pile-up overlaying signals from distribution 
   48         AvgMuForPileUpSimulation      -- Average number of pp collisions for pile-up simulation with SimulatePileUpWithPoiss 
   49         PileUpAmpDistFileName         -- Distribution to simulate pile-up with SimulatePileUpWithPoiss 
   50         RandomSeed                    -- Random seed for random number generator 
   51         SimulatePulseChain            -- Simulate continuous output from readout cosidering HL-LHC paradigm 
   52         Bigain                        -- Save two gains in ntuple 
   53         NPulses                       -- The number of neighboring bunch crossings (before and after the in-time crossing) whose signals are accounted for when simulating the total contribution to a given bunch crossing 
   56     kwargs.setdefault(
'InTimeAmp', 1000)
 
   57     kwargs.setdefault(
'InTimeAmpPulseProb', 1)
 
   58     kwargs.setdefault(
'ImperfectionMean', 1)
 
   59     kwargs.setdefault(
'ImperfectionRms', 0)
 
   60     kwargs.setdefault(
'TilePhaseII', 
False)
 
   61     kwargs.setdefault(
'NSamples', 7)
 
   62     kwargs.setdefault(
'Bigain', 
False)
 
   63     kwargs.setdefault(
'SimulatePulseChain', 
False)
 
   65     PhaseII = kwargs[
'TilePhaseII']
 
   66     PulseChain = kwargs[
'SimulatePulseChain']
 
   70         kwargs.setdefault(
'PedestalValueHG', 100)
 
   71         kwargs.setdefault(
'PedestalValueLG', 100)
 
   72         kwargs.setdefault(
'ChannelSpecificPedestal', 
False)
 
   73         kwargs.setdefault(
'UseGaussNoise', 
True)
 
   75         kwargs.setdefault(
'ChannelSpecificPedestal', 
True)
 
   76         kwargs.setdefault(
'ChannelSpecificNoise', 
True)
 
   78     kwargs.setdefault(
'PileUpFraction', 0)
 
   79     kwargs.setdefault(
'AmpDistLowerLimit', 0)
 
   80     kwargs.setdefault(
'SimulatePileUpWithPoiss', 
False)
 
   81     kwargs.setdefault(
'AvgMuForPileUpSimulation', 80)
 
   83     from TileGeoModel.TileGMConfig 
import TileGMCfg
 
   86     from TileConditions.TileCablingSvcConfig 
import TileCablingSvcCfg
 
   89     from TileConditions.TileSampleNoiseConfig 
import TileSampleNoiseCondAlgCfg
 
   92     from RngComps.RngCompsConfig 
import AthRNGSvcCfg
 
   93     kwargs[
'RndmSvc'] = acc.getPrimaryAndMerge( 
AthRNGSvcCfg(flags) )
 
   96     nSamples = kwargs[
'NSamples'] 
if not PulseChain 
else 1
 
   97     ADCmax = 4095 
if PhaseII 
else 1023
 
   98     ADCmaskValue = 4800 
if PhaseII 
else 2047
 
   99     from TileConditions.TileInfoLoaderConfig 
import TileInfoLoaderCfg
 
  101                                  NSamples=nSamples, TrigSample=((nSamples-1)//2),
 
  102                                  ADCmax=ADCmax, ADCmaskValue=ADCmaskValue) )
 
  104     TileDigitsFromPulse = CompFactory.TileDigitsFromPulse