Introduction
This page documents the files used for the Liquid Argon calorimeter
SuperCell simulation studies and the steps to produce them .
Particle Gun simulations
In order to study the response of the supercells it is interesting to deploy a particle gun with fixed position and/or energy. Since one of the objectives was to investigate the effect of the digitization scheme (
FixedEt or mV) in the performance of the
SuperCells, we reconstructed the simulated data using both schemes. This is done during the digitization process.
File list in EOS
The generated files produced using the procedure bellow are available in EOS. To access the eos files, one can do
eosmount $HOME/eos
cd eos/atlas/atlascerngroupdisk/det-larg/SuperCells/
FixedEtLSB_middle125 |
Particle Gun |
FixedEtLSB_middle125 |
Data_FixedEtLSB_middle125_PG_Electron_1p5TeV_Eta0p1_Phi0p1 |
FixedEtLSB_middle125 |
Data_FixedEtLSB_middle125_PG_Electron_1p5TeV_Eta0p8_Phi0p1 |
FixedEtLSB_middle125 |
Data_FixedEtLSB_middle125_PG_Electron_1p5TeV_Eta1p2_Phi0p1 |
FixedEtLSB_middle125 |
Data_FixedEtLSB_middle125_PG_Electron_1p5TeV_Eta1p45_Phi0p1 |
FixedEtLSB_middle125 |
Data_FixedEtLSB_middle125_PG_Electron_1p5TeV_Eta1p9_Phi0p1 |
FixedEtLSB_middle125 |
Data_FixedEtLSB_middle125_PG_Electron_1p5TeV_Eta2p0_Phi0p1 |
FixedEtLSB_middle125 |
Data_FixedEtLSB_middle125_PG_Electron_1p5TeV_Eta2p4_Phi0p1 |
FixedEtLSB_middle125 |
Data_FixedEtLSB_middle125_PG_Electron_7TeV_Eta0p1_Phi0p1 |
FixedEtLSB_middle125 |
Data_FixedEtLSB_middle125_PG_Electron_7TeV_Eta0p8_Phi0p1 |
FixedEtLSB_middle125 |
Data_FixedEtLSB_middle125_PG_Electron_7TeV_Eta1p2_Phi0p1 |
FixedEtLSB_middle125 |
Data_FixedEtLSB_middle125_PG_Electron_7TeV_Eta1p45_Phi0p1 |
FixedEtLSB_middle125 |
Data_FixedEtLSB_middle125_PG_Electron_7TeV_Eta1p9_Phi0p1 |
Mixed |
ParticleGun |
mV-LSB |
mV-LSB_PG_Electron_1p5TeV_Eta0p1_Phi0p1 |
mV-LSB |
mV-LSB_PG_Electron_1p5TeV_Eta1p45_Phi0p1 |
mV-LSB |
mV-LSB_PG_Electron_1p5TeV_Eta2p4_Phi0p1 |
mV-LSB |
mV-LSB_PG_Electron_3p5TeV_Eta0p1_Phi0p1 |
mV-LSB |
mV-LSB_PG_Electron_3p5TeV_Eta1p45_Phi0p1 |
Mixed |
Noise |
FixedELSB_middle125 |
Data_FixedELSB_middle125 |
FixedELSB_middle125 |
Data_FixedELSB_middle64 |
FixedEtLSB_middle125 |
Data_FixedEtLSB_middle125 |
FixedEtLSB_middle64 |
Data_FixedEtLSB_middle64 |
mv-LSB |
Data_mV_LSB |
Procedure for generating the files
You may want to create a directory structure for holding EVGEN, HITS and ESD or AOD files. The following instructions assume such a structure.
1) Preparation of directory structure
#Setup Frontier/SQUID (should be done somewhere else, or maybe it's already set in your setup)
export FRONTIER_SERVER="(serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://lcgft-atlas.gridpp.rl.ac.uk:3128/frontierATLAS)(serverurl=http://frontier-atlas.lcg.triumf.ca:3128/ATLAS_frontier)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://192.168.0.1:3128)"
mkdir TestArea
mkdir EVNT
mkdir HITS
mkdir RDO
mkdir AOD
setupATLAS
cd TestArea
asetup AtlasProduction,20.1.5.10,gcc48,here,setup
2) EVNT generation (Particle Gun)
Bellow is the procedure to create the EVNT file with 10k events using a particle gun :
JOBOPTSEARCHPATH=/cvmfs/atlas.cern.ch/repo/sw/Generators/MC15JobOptions/latest/common:$JOBOPTSEARCHPATH
JOBOPTSEARCHPATH=/cvmfs/atlas.cern.ch/repo/sw/Generators/MC15JobOptions/latest/share/DSID147xxx:$JOBOPTSEARCHPATH
export JO=PG_Electron_3p5TeV_Eta0p8_Phi0p1
export RUN=501003
Generate_tf.py --jobConfig=${JO}.py \
--runNumber=$RUN \
--randomSeed=$RANDOM \
--ecmEnergy=13000 \
--maxEvents=10000 \
--outputEVNTFile=../EVNT/${JO}.EVNT.pool.root
Bellow is an example of a job option. Please see
https://twiki.cern.ch/twiki/bin/view/AtlasProtected/ParticleGunForAtlas for more details about the use and options for a particle gun in the event generation step.
# Generates fixed energy 3.5 TeV electron gun
evgenConfig.description = "Single ele with phi in [0.0, 0.2], eta in [0.7, 0.9], and pT = 3.5 TeV"
evgenConfig.keywords = ["singleParticle", "electron"]
include("ParticleGun/ParticleGun_Common.py")
import ParticleGun as PG
genSeq.ParticleGun.sampler.pid = 11
genSeq.ParticleGun.sampler.mom = PG.PtEtaMPhiSampler(pt=3500000,eta=[0.7,0.9],phi=[0.0, 0.2])
3) Simulation Step
The HITS file is created using Sim_tf.py transform. Be aware that high energy particles may take a very long time to simulate (close to 1h per event for 3.5TeV in high eta regions for exemple ), so you may want to split this step in several jobs with few events each.
export JO=PG_Electron_3p5TeV_Eta0p8_Phi0p1
export EVNT=../EVNT/${JO}.EVNT.pool.root
export HITS=../HITS/${JO}.HITS.pool.root
Sim_tf.py --inputEVNTFile= ${EVNT} \
--outputHITSFile=${HITS} \
--maxEvents=200 \
--geometryVersion=ATLAS-R2-2015-03-01-00_VALIDATION \
--conditionsTag=OFLCOND-RUN12-SDR-30 \
--physicsList=FTFP_BERT \
--postInclude "RecJobTransforms/UseFrontier.py" \
--preInclude "EVNTtoHITS:SimulationJobOptions/preInclude.BeamPipeKill.py,SimulationJobOptions/preInclude.FrozenShowersFCalOnly.py" \
--simulator MC12G4 \
--truthStrategy MC12 \
--randomSeed=$RANDOM
4) Digitization Step
During digitization you need to decide if you want to use a
FixedEt scheme (the LSB of digitizer will correspond to a fixed ET, and the correpondence of ET to noise voltage level changes as a function of eta) or a mV scheme (the LSB of digitizer is set such as the useful digitization range corresponds to the saturation limit of the analog chain, which translates to about 1mV, hence the name mV scheme). Also you need to decide if you want to include or not the pileup. Bellow we provide examples for all these cases
4.1) FixedEt scheme with pileup
export MINBIAS_HIGH=PileupData/mc15_13TeV.361035.Pythia8EvtGen_A2MSTW2008LO_minbias_inelastic_high.merge.HITS.e3581_s2578_s2195_tid05608152_00/
export MINBIAS_LOW=PileupData/mc15_13TeV.361034.Pythia8EvtGen_A2MSTW2008LO_minbias_inelastic_low.merge.HITS.e3581_s2578_s2195_tid05608147_00/
export SCHEME=fixedEtLSB_middle125
export JO=PG_Electron_3p5TeV_Eta0p8_Phi0p1
export HITS=../HITS/${JO}.HITS.pool.root
export RDO=../RDO/${SCHEME}_${JO}.RDO.pool.root
Reco_tf.py --inputHITSFile $HITS*.pool.root \
--outputRDOFile $RDO \
--maxEvents=200 --jobNumber=1 \
--conditionsTag 'default:OFLCOND-RUN12-SDR-30' \
--geometryVersion 'default:ATLAS-R2-2015-03-01-00' \
--autoConfiguration 'everything' \
--numberOfHighPtMinBias '0' \
--numberOfLowPtMinBias '0' \
--numberOfCavernBkg '0' \
--pileupFinalBunch 6 \
--inputLowPtMinbiasHitsFile \
$MINBIAS_LOW/HITS.05608147._000029.pool.root.1 \
$MINBIAS_LOW/HITS.05608147._000039.pool.root.1 \
$MINBIAS_LOW/HITS.05608147._000069.pool.root.1 \
$MINBIAS_LOW/HITS.05608147._000081.pool.root.1 \
$MINBIAS_LOW/HITS.05608147._000220.pool.root.1 \
--inputHighPtMinbiasHitsFile \
$MINBIAS_HIGH/HITS.05608152._000017.pool.root.1 \
$MINBIAS_HIGH/HITS.05608152._000115.pool.root.1 \
$MINBIAS_HIGH/HITS.05608152._000376.pool.root.1 \
$MINBIAS_HIGH/HITS.05608152._000433.pool.root.1 \
$MINBIAS_HIGH/HITS.05608152._000520.pool.root.1 \
--digiSeedOffset1 $RANDOM \
--digiSeedOffset2 $RANDOM \
--postExec "all:CfgMgr.MessageSvc().setError+=[\"HepMcParticleLink\"]" "HITtoRDO:job.StandardPileUpToolsAlg.PileUpTools[\"MergeMcEventCollTool\"].OnlySaveSignalTruth=True;job.StandardPileUpToolsAlg.PileUpTools[\"MdtDigitizationTool\"].LastXing=150;""tagToOverride=\"FixedEtLSB-middle125\";from IOVDbSvc.CondDB import conddb;conddb.addOverride(\"/LAR/ElecCalibMCSC/Noise\",\"LARElecCalibMCSCNoise-\"+tagToOverride);conddb.addOverride(\"/LAR/ElecCalibMCSC/Ramp\",\"LARElecCalibMCSRamp-\"+tagToOverride);topSequence.LArSCL1Maker.TruthHitsContainer=\"SCellTruth\";streamRDO.ItemList+=[\"CaloCellContainer#SCellTruth\"]" \
--postInclude "default:RecJobTransforms/UseFrontier.py" "LArROD/LArSuperCellEnable.py" \
--preExec "all:rec.Commissioning.set_Value_and_Lock(True);""mu=1;from AthenaCommon.BeamFlags import jobproperties;jobproperties.Beam.numberOfCollisions.set_Value_and_Lock(mu);from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(mu);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True)" "HITtoRDO:userRunLumiOverride={\"run\":222525, \"startlb\":1,\"timestamp\":1376703331, \"mu\":1.0}" \
--preInclude \
"Digitization/ForceUseOfPileUpTools.py,SimulationJobOptions/preInclude.PileUpBunchTrainsMC15_2015_25ns_Config1.py,RunDependentSimData/configLumi_user.py" \
--steering "RAWtoESD:in-RDO,in+RDO_TRIG,in-BS" \
--triggerConfig "MCRECO:DBF:TRIGGERDBMC:2013,7,11"
4.2) FixedEt scheme no pileup
export SCHEME=fixedEtLSB_middle125
export JO=PG_Electron_3p5TeV_Eta0p8_Phi0p1
export HITS=../HITS/${JO}.HITS.pool.root
export RDO=../RDO/${SCHEME}_${JO}.RDO.pool.root
Reco_tf.py --inputHITSFile $HITS/*.pool.root \
--outputRDOFile $RDO \
--maxEvents=1000 --jobNumber=1 \
--conditionsTag 'default:OFLCOND-RUN12-SDR-30' \
--geometryVersion 'default:ATLAS-R2-2015-03-01-00' \
--autoConfiguration 'everything' \
--numberOfHighPtMinBias '0' \
--numberOfLowPtMinBias '0' \
--numberOfCavernBkg '0' \
--digiSeedOffset1 $RANDOM \
--digiSeedOffset2 $RANDOM \
--postExec "all:CfgMgr.MessageSvc().setError+=[\"HepMcParticleLink\"]" "tagToOverride=\"FixedEtLSB-middle125\";from IOVDbSvc.CondDB import conddb;conddb.addOverride(\"/LAR/ElecCalibMCSC/Noise\",\"LARElecCalibMCSCNoise-\"+tagToOverride);conddb.addOverride(\"/LAR/ElecCalibMCSC/Ramp\",\"LARElecCalibMCSRamp-\"+tagToOverride);topSequence.LArSCL1Maker.TruthHitsContainer=\"SCellTruth\";streamRDO.ItemList+=[\"CaloCellContainer#SCellTruth\"]" \
--postInclude "default:RecJobTransforms/UseFrontier.py" "LArROD/LArSuperCellEnable.py" \
--preExec "all:rec.Commissioning.set_Value_and_Lock(True);""mu=1;from AthenaCommon.BeamFlags import jobproperties;jobproperties.Beam.numberOfCollisions.set_Value_and_Lock(mu);from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(mu);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True)" \
--steering "RAWtoESD:in-RDO,in+RDO_TRIG,in-BS" \
--triggerConfig "MCRECO:DBF:TRIGGERDBMC:2013,7,11"
4.3) mV scheme with pileup
export MINBIAS_HIGH=PileupData/mc15_13TeV.361035.Pythia8EvtGen_A2MSTW2008LO_minbias_inelastic_high.merge.HITS.e3581_s2578_s2195_tid05608152_00/
export MINBIAS_LOW=PileupData/mc15_13TeV.361034.Pythia8EvtGen_A2MSTW2008LO_minbias_inelastic_low.merge.HITS.e3581_s2578_s2195_tid05608147_00/
export SCHEME=mV-LSB
export JO=PG_Electron_3p5TeV_Eta0p8_Phi0p1
export HITS=../HITS/${JO}.HITS.pool.root
export RDO=../RDO/${SCHEME}_${JO}.RDO.pool.root
Reco_tf.py --inputHITSFile $HITS*.pool.root \
--outputRDOFile $RDO \
--maxEvents=200 --jobNumber=1 \
--conditionsTag 'default:OFLCOND-RUN12-SDR-30' \
--geometryVersion 'default:ATLAS-R2-2015-03-01-00' \
--autoConfiguration 'everything' \
--numberOfHighPtMinBias '0' \
--numberOfLowPtMinBias '0' \
--numberOfCavernBkg '0' \
--pileupFinalBunch 6 \
--inputLowPtMinbiasHitsFile \
$MINBIAS_LOW/HITS.05608147._000029.pool.root.1 \
$MINBIAS_LOW/HITS.05608147._000039.pool.root.1 \
$MINBIAS_LOW/HITS.05608147._000069.pool.root.1 \
$MINBIAS_LOW/HITS.05608147._000081.pool.root.1 \
$MINBIAS_LOW/HITS.05608147._000220.pool.root.1 \
--inputHighPtMinbiasHitsFile \
$MINBIAS_HIGH/HITS.05608152._000017.pool.root.1 \
$MINBIAS_HIGH/HITS.05608152._000115.pool.root.1 \
$MINBIAS_HIGH/HITS.05608152._000376.pool.root.1 \
$MINBIAS_HIGH/HITS.05608152._000433.pool.root.1 \
$MINBIAS_HIGH/HITS.05608152._000520.pool.root.1 \
--digiSeedOffset1 $RANDOM \
--digiSeedOffset2 $RANDOM \
--postExec "all:CfgMgr.MessageSvc().setError+=[\"HepMcParticleLink\"]" "HITtoRDO:job.StandardPileUpToolsAlg.PileUpTools[\"MergeMcEventCollTool\"].OnlySaveSignalTruth=True;job.StandardPileUpToolsAlg.PileUpTools[\"MdtDigitizationTool\"].LastXing=150;""tagToOverride=\"mV-LSB\";from IOVDbSvc.CondDB import conddb;conddb.addOverride(\"/LAR/ElecCalibMCSC/Noise\",\"LARElecCalibMCSCNoise-\"+tagToOverride);conddb.addOverride(\"/LAR/ElecCalibMCSC/Ramp\",\"LARElecCalibMCSRamp-\"+tagToOverride);topSequence.LArSCL1Maker.TruthHitsContainer=\"SCellTruth\";streamRDO.ItemList+=[\"CaloCellContainer#SCellTruth\"]" \
--postInclude "default:RecJobTransforms/UseFrontier.py" "LArROD/LArSuperCellEnable.py" \
--preExec "all:rec.Commissioning.set_Value_and_Lock(True);""mu=1;from AthenaCommon.BeamFlags import jobproperties;jobproperties.Beam.numberOfCollisions.set_Value_and_Lock(mu);from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(mu);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True)" "HITtoRDO:userRunLumiOverride={\"run\":222525, \"startlb\":1,\"timestamp\":1376703331, \"mu\":1.0}" \
--preInclude \
"Digitization/ForceUseOfPileUpTools.py,SimulationJobOptions/preInclude.PileUpBunchTrainsMC15_2015_25ns_Config1.py,RunDependentSimData/configLumi_user.py" \
--steering "RAWtoESD:in-RDO,in+RDO_TRIG,in-BS" \
--triggerConfig "MCRECO:DBF:TRIGGERDBMC:2013,7,11"
4.4) mV scheme, no pileup
export SCHEME=fixedEtLSB_middle125
export JO=PG_Electron_3p5TeV_Eta0p8_Phi0p1
export HITS=../HITS/${JO}.HITS.pool.root
export RDO=../RDO/${SCHEME}_${JO}.RDO.pool.root
Reco_tf.py --inputHITSFile $HITS/*.pool.root \
--outputRDOFile $RDO \
--maxEvents=1000 --jobNumber=1 \
--conditionsTag 'default:OFLCOND-RUN12-SDR-30' \
--geometryVersion 'default:ATLAS-R2-2015-03-01-00' \
--autoConfiguration 'everything' \
--numberOfHighPtMinBias '0' \
--numberOfLowPtMinBias '0' \
--numberOfCavernBkg '0' \
--digiSeedOffset1 $RANDOM \
--digiSeedOffset2 $RANDOM \
--postExec "all:CfgMgr.MessageSvc().setError+=[\"HepMcParticleLink\"]" "tagToOverride=\"mV-LSB\";from IOVDbSvc.CondDB import conddb;conddb.addOverride(\"/LAR/ElecCalibMCSC/Noise\",\"LARElecCalibMCSCNoise-\"+tagToOverride);conddb.addOverride(\"/LAR/ElecCalibMCSC/Ramp\",\"LARElecCalibMCSRamp-\"+tagToOverride);topSequence.LArSCL1Maker.TruthHitsContainer=\"SCellTruth\";streamRDO.ItemList+=[\"CaloCellContainer#SCellTruth\"]" \
--postInclude "default:RecJobTransforms/UseFrontier.py" "LArROD/LArSuperCellEnable.py" \
--preExec "all:rec.Commissioning.set_Value_and_Lock(True);""mu=1;from AthenaCommon.BeamFlags import jobproperties;jobproperties.Beam.numberOfCollisions.set_Value_and_Lock(mu);from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(mu);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True)" \
--steering "RAWtoESD:in-RDO,in+RDO_TRIG,in-BS" \
--triggerConfig "MCRECO:DBF:TRIGGERDBMC:2013,7,11"
5) Creating an Hybrid xAOD/D3PD
This is needed because we cannot access calorimter cells directly in xAOD (one can still use the AOD and Athena for that, but we want to do all in ROOT, so this hybrid is necessary). This is not ATLAS standandard, and as such some patches are necessry to run it.
This was provided by Denis Damazio. You will need to download the d3pd_filler.tgz file attached here
(make sure you are in the TestArea directory where you run asetup)
pkgco.py D3PDMakerRoot-00-01-33
pkgco.py CaloD3PDMaker
pkgco.py PyJobTransforms-02-03-46
tar -zxvf d3pd_filler.tgz
cp -r D3PD_filler/* .
./compile.sh
cd Run
export SCHEME=mV-LSB
export JO=PG_Electron_3p5TeV_Eta0p8_Phi0p1
export RDO=../RDO/${SCHEME}_${JO}.RDO.pool.root
export XAOD=../AOD/${SCHEME}_${JO}.xAOD.pool.root
Reco_tf.py \
--inputRDOFile ${RDO} \
--outputAODFile ${XAOD} \
--maxEvents 10000 \
--conditionsTag 'OFLCOND-RUN12-SDR-30' \
--geometryVersion 'ATLAS-R2-2015-03-01-00' \
--autoConfiguration 'everything' \
--postInclude 'RecJobTransforms/UseFrontier.py' 'r2e:postInc_SC_RDOtoESD.py' 'e2a:postInc_SC_ESDtoAOD.py,D3PD_tt.py'
That's it. You should have an xAOD file with the calorimeter tree inside: caloD3PD contains several calorimeter objects at the cell level (reconstructed and digits) as well as the
SuperCell objects. The
CollectionTree has the xAOD containers (Tracking, MET, Jets etc.) - so you need to load ROOTCORE to access these.
--
MarcoALeite - 2016-03-09