$ setenv SCRAM_ARCH slc6_amd64_gcc491 $ cmsrel CMSSW_7_3_0 $ cd CMSSW_7_3_0/src $ cmsenv $ git cms-addpkg L1Trigger/L1TCalorimeter $ scram build -j 4 $$$ If "git cms-addpkg" returns the error "fatal: destination path ... already exists and is not an empty directory", you can perform the following gymnastics: $ mkdir ~/src_temp $ mv * ~/src_temp/ $ git cms-addpkg L1Trigger/L1TCalorimeter $ mv ~/src_temp/* . $ rmdir ~/src_temp $$$ If anyone knows the "right" way to do this in git, please revise these instructions
L1Trigger/L1TCalorimeter/test/SimL1Emulator_Stage1.pyso that it points at an available dataset. Then, run the configuration with
$ cmsRun L1Trigger/L1TCalorimeter/test/SimL1Emulator_Stage1.pyThis will produce an EDM file which by default is named "SimL1Emulator_Stage1_PP.root". You can inspect the configuration online here
FirmwareVersion | The FirmwareVersion controls which set of algorithms are run. Currently FirmwareVersion=1 corresponds to the Heavy Ion algorithms, while FW=2 corresponds to PP algorithms. |
regionPUSType | Pileup subtraction algorithm; "PUM0" (def. for pp), "HICaloRingSub", "None" |
egLsb | This is the LSB for EGamma candidates. Do not change this unless you change the calibrations to match. |
egSeedThreshold | minimum ET of 2x1 EG candidate |
tauSeedThreshold | minimum ET of 4x8Tau candidate |
tauNeighbourThreshold | minimum ET of 4x4 Tau candidate's neighbour |
switchOffTauVeto | ET threshold when tau veto is not applied anymore |
tauRelativeJetIsolationCut | (12x12 - 4x8) / 4x8 < Cut, where 4x8 represents the ET of the Tau candidate and 12x12 is the ET of the matching jet. |
switchOffTauIso | ET threshold when relative jet isolation requirement is not applied anymore for the tau to be considered isolated. |
tauRelativeJetIsolationLimit | Relative jet isolation has to be smaller than this limit in order to use switchOffTauIso |
jetLsb | This is the LSB for Jet candidates. Do not change this unless you change the calibrations to match. |
jetSeedThreshold | This value is the amount (in GeV) which the central region must have to be considered a jet seed. |
etSumLsb | This is the LSB for EtSum candidates. Do not change this unless you change the calibrations to match. |
etSumEtaMin | cms.vint32(minEtaForMET, minEtaForHT); minimum Eta of regions used in energy sum calculations. Note these are specified in hw coordinates. A value of 4 corresponds to the Endcap/Forward boundary. |
etSumEtaMax | cms.vint32(maxEtaForMET, maxEtaForHT); maximum Eta of regions used in energy sum calculations. Note these are specified in hw coordinates. A value of 17 corresponds to the Endcap/Forward boundary. |
etSumEtThreshold | cms.vdouble(regionETCutForMET, regionETCutForHT); minimum ET of regions used in energy sum calculations |
const int PT_MAX = 120; const int nPTBINS = PT_MAX/4; // Jets are on a 4 GeV scale TFile *infile = TFile::Open("SimL1Emulator_Stage1.root"); TTree *events = (TTree*)infile->Get("Events"); TH1D *pt = new TH1D("pt",";L1 Jet p_{T} (GeV);Count",nPTBINS,0,PT_MAX); events->Project(pt->GetName(), "l1tJetBXVector_caloStage1FinalDigis__L1TEMULATION.obj.data_.l1t::L1Candidate.pt()[0][0]"); TH1D *rate = new TH1D("rate",";L1 Jet p_{T} (GeV);Rate (Arb.)", nPTBINS,0,PT_MAX); double total_integral = pt->Integral(0,nPTBINS+1); for(int i = 0; i < nPTBINS; i++) { double j = (double)i*(double)PT_MAX/(double)nPTBINS; double integral = pt->Integral(i, nPTBINS+1); rate->Fill(j, (double)integral/total_integral); } rate->Draw();Alternatively, you can use the output of the L1TriggerDPG, as used in the Computing Efficiencies section below.
$ git clone https://github.com/cms-l1-dpg/L1Ntuples.git L1TriggerDPG/L1Ntuples $ git clone https://github.com/cms-l1-dpg/L1Menu.git L1TriggerDPG/L1Menu $ scram build -j4 $ cd L1TriggerDPG/L1Menu/test $ cmsRun customL1NtupleFromRaw.py reEmulation=True reEmulMuons=True reEmulCalos=True patchNtuple=True force2012Config=True customDTTF=True dttfLutsFile=sqlite:../data/dttf_config.db globalTag=POSTLS162_V2::All runOnMC=True runOnPostLS1=True useStage1Layer2=TrueThis will run the L1 Emulator and DPG ntuple producer in one step.
rehash # (hash -r if using bash shell) hltGetConfiguration /dev/CMSSW_7_2_0/GRun/V11 --full --offline --mc --unprescale --process TEST --globaltag GlobalTag --l1-emulator 'stage1,gt' --l1Xml L1Menu_Collisions2015_25ns_v1_L1T_Scales_20101224_Imp0_0x102f.xml > hlt_stage1.py cmsRun hlt_stage1.py >& runTest.log &Please replace
GlobalTag
in the hltGetConfiguration
command with the GlobalTag appropriate for the MC sample being used. This information can be found on the SWGuideGlobalHLT twiki.
This recipe will run both the updated calorimeter and muon emulators for 2015. If you wish to run an HLT menu other than the one listed above, please be sure it only uses L1 seeds found in the L1Menu_Collisions2015_25ns_v1 menu. Otherwise the job will crash. See L1Menu_Collisions2015_25ns_v1 for the list of allowed seeds.
cmsrel CMSSW_7_2_0_pre7 cd CMSSW_7_2_0_pre7/src cmsenv git cms-merge-topic --unsafe cms-l1t-offline:Emulator_1.5 scram b -j7 rehash # (hash -r if using bash shell) hltGetConfiguration /dev/CMSSW_7_2_0/GRun/V11 --full --offline --mc --unprescale --process TEST --globaltag PRE_LS172_V16 --l1-emulator 'stage1,gt' --l1Xml L1Menu_Collisions2015_25ns_v1_L1T_Scales_20101224_Imp0_0x102f.xml > hlt_stage1.py & cmsRun hlt_stage1.py >& runTest.log &Note there is no need to add
from SLHCUpgradeSimulations.Configuration.postLS1Customs import * process = customise_HLT( process )to the end of hlt_stage1.py as directed for PostLS1 workflows on the SWGuideGlobalHLT twiki, as this is already taken care of in this recipe. If you wish to run an HLT menu other than the one listed above, please be sure it only uses L1 seeds found in the L1Menu_Collisions2015_25ns_v1 menu. Otherwise the job will crash. See L1Menu_Collisions2015_25ns_v1 for the list of allowed seeds.
/dev/CMSSW_7_1_2/GRun/V15
, is used as an example, but any menu compatible with this release should work as well.
cmsrel CMSSW_7_2_0_pre6 cd CMSSW_7_2_0_pre6/src cmsenv git cms-merge-topic --unsafe cms-l1t-offline:Stage1plusHLT_V0 scram b -j7 rehash # (hash -r if using bash shell) cp L1Trigger/L1TCommon/data/dttf_config.db $PWD ## for now, this file must reside in the directory you will ultimately run from hltGetConfiguration /dev/CMSSW_7_1_2/GRun/V15 --full --offline --mc --unprescale --process TEST --globaltag auto:upgradePLS1 --l1-emulator 'stage1,gt' > hlt_stage1.py cmsRun hlt_stage1.py >& runTest.log &Note there is no need to add
from SLHCUpgradeSimulations.Configuration.postLS1Customs import * process = customise_HLT( process )to the end of hlt_stage1.py as directed for PostLS1 workflows on the SWGuideGlobalHLT twiki, as this is already taken care of in this recipe. Running the Preliminary 2015 L1 Menu To include the candidate 2015 L1 Menu, L1Menu_Collisions2015_25ns_v1, in the L1 Stage1 emulator + HLT workflow, please add the following to the recipe given above:
cd $CMSSW_BASE/src git cms-addpkg L1TriggerConfig/L1GtConfigProducers cp -a /afs/cern.ch/user/g/ghete/public/L1Menu/L1Menu_Collisions2015_25ns_v1/xml/Rev.1.1/L1Menu_Collisions2015_25ns_v1_L1T_Scales_20101224_Imp0_0x102f.xml L1TriggerConfig/L1GtConfigProducers/data/Luminosity/startup/and add the option
--l1Xml L1Menu_Collisions2015_25ns_v1_L1T_Scales_20101224_Imp0_0x102f.xml
to the hltGetConfiguration command given above
hltGetConfiguration /dev/CMSSW_7_2_0/GRun/V11 --full --offline --mc --unprescale --process TEST --globaltag auto:upgradePLS1 --l1-emulator 'stage1,gt' --l1Xml L1Menu_Collisions2015_25ns_v1_L1T_Scales_20101224_Imp0_0x102f.xml > hlt_stage1_newL1Menu.pyBefore running, please be sure the HLT menu has be updated to use only L1 seeds found in the L1Menu_Collisions2015_25ns_v1 menu. See L1Menu_Collisions2015_25ns_v1 for the list of allowed seeds.