Single diffractive dijet production software page
Code and tags
The single diffractive dijet analysis software resides in
DiffractiveForwardAnalysis/SingleDiffractiveDijetsAnalysis
To use it, follow the procedure reported here, tested in CMSSW_2_2_9 on the
Winter09 Fast Sim Production.
In the CMSSW_2_2_9/src directory check out and compile the following packages:
cvs co -r v02-fastsim DiffractiveForwardAnalysis/SingleDiffractiveDijetsAnalysis
cvs co -r V00-00-01 DataFormats/CMS.CastorReco
cvs co -r V00-01-00 FastSimulation/ForwardDetectors
cvs co -r V00-01-00 RecoLocalCalo/Castor
cvs co SimDataFormats/GeneratorProducts
(needed to run the
FastSimulation of the CASTOR detector)
cvs co -r V01-07-02 CondFormats/JetMETObjects
cvs co -r V01-08-13 JetMETCorrections/Configuration
cvs co -r V02-09-02 JetMETCorrections/Modules
cvs co -r V01-08-00 JetMETCorrections/Algorithms
(
Winter09 jet corrections in CMSSW_2_2_X)
cvs co -r CMSSW_2_2_9 PhysicsTools/HepMCCandAlgos
rm PhysicsTools/HepMCCandAlgos/plugins/GenEventKTValueProducer.cc
cvs co PhysicsTools/HepMCCandAlgos/plugins/GenEventKTValueProducer.cc
scram b
This version of the code is meant to be run on all Winter09FastSim signal and background samples and produces results for different HF and CASTOR noise threshold setting.
Analysis software
The analysis is organized in two steps:
- sample reduction (skimming)
- analysis of the skimmed samples
Skimming code
The script used for the skim process is
crabCallerSkimmer.py
.
It prepares the CMSSW configuration file (pset.py) and crab.cfg file and submits jobs to the Grid using CRAB.
The skimmed sample contains:
- CMS.CaloTowers
- CorrectedCaloJets (needs to include uncorrected CaloJets)
- GenJets (sisCone5)
- genEventKTValue (pthat for Herwig)
- genEventScale (pthat for Pythia)
- recoGenParticles
- CASTORTowers
- recoTracks
- TriggerResults
The skimming code also applies a selection at trigger level: only events that pass the HLT_DiJetAve30 conditions are saved.
Set your configuration by editing the script
crabCallerSkimmer.py (see next section) and run it:
chmod +x crabCallerSkimmer.py
./crabCallerSkimmer.py
How to configure skim jobs
The following parameters need to be configured by the user before running the script
crabCallerSkimmer.py:
- storage_element: storage element where skimmed samples are going to be stored; UERJ (default) is a good option
- njobs: the number of jobs to be submitted
- correction (°): the correction service to be used
- cross_section (°): the cross section relative to the analyzed sample; it is not used by the present code
- dataset (°): the dataset to be skimmed
- uiworkingdir (°): the crab working directory to be created; it will also be the base of the skimmed dataset name
- remotedir (°): the directory where skimmed samples will be stored in the chosen storage element . Note: *every time* a job is submitted, this parameter has to be changed to something never used
- sewhitelist (°): list of storage elements (SE); only jobs accessing data at SE in the chosen sewhitelist will be created and then submitted
- generator (°): the generator used for MC production
The parameters marked by (°) need to be configured for
each sample one wants to skim.
More information about CRAB settings can be found
here.
For each dataset to be skimmed, set the corresponding parameters and uncomment the line
ConfigHandler(correction,cross_section,dataset,njobs,uiworkingdir,remotedir,sewhitelist,generator)
placed the end of the parameter list; when the script is run, this will create the pset.py and crag.cfg and submit the job.
Skimmed dataset publication
To publish the skimmed data on DBS type:
crab -publish -c UI_WORKING_DIR
where UI_WORKING_DIR has to be the same directory configured in the script
script _crabCallerSkimmer.py
By default, data will be published on
dbs_ph_analysis_02
. To change it, follow instructions given in the
CRAB documentation page.
Data analysis code
The directory
SingleDiffractiveDijetsAnalysis/src 
contains the following files, each dedicated to a particular step of the analysis:
The code runs on skimmed data using the script
crabCallerAna_Skim_Fast_v1.py
which creates the CMSSW configuration file (pset.py) and crab.cfg file and submits jobs to the Grid using CRAB.
Set your configuration by editing the script
crabCallerAna_Skim_Fast_v1.py (as described below) and run it:
chmod +x crabCallerAna_Skim_Fast_v1.py
./crabCallerAna_Skim_Fast_v1.py
How to Configure analysis jobs
The following parameters can be configured in
crabCallerAna_Skim_Fast_v1.py:
- HF and CASTOR noise thresholds. Lines like
Hf1Castor100 = {"name":"Hf1Castor100","hfnoise":"0.1","castornoise":"10.0"}
parametersList.append(Hf1Castor100)
are used to set different HF and CASTOR noise thresholds. The command
parametersList.append(...)
creates a new path which corresponds to the chosen HF and CASTOR threshold configuration (0.1
GeV for HF and 10
GeV for CASTOR, in the example). One can add as many paths as one wants, but has to take into account the increasing size of the output file.
GenLevel CASTOR threshold are fixed to 10.0
GeV.
- Job Configuration. Lines like
##PomWigDiJetsMinusPt80
generator = 'pomwig'
dataset = '/PomWigDiJetsMinusPt80/fsilva-PomWigDiJetsMinusPt80_Skim_FastSim_v1-d9106ce61bbaa279a796fd9486526c79/USER'
#njobs = '2000'
uiworkingdir = 'PomWigDiJetsMinusPt80_Ana_UIDIR'
##options: uerj,kfki,pic
##use '' for no se_white_list
sewhitelist = 'uerj'
ConfigHandler(generator, lumi, rgsp, eff, parametersList, dataset, njobs, uiworkingdir, sewhitelist)
configure and submit jobs for different datasets. For each of them, the user has to set the following parameters:
- generator: generator used for MC production; it makes difference on the weight
- dataset: skimmed dataset to be analyzed
- uiworkingdir: name of the crab working directory. It will be crated in the directory where the script crabCallerAna_Skim_Fast_v1.py is run; in its subdirectory crabCallerBackup one can find the pset.py and crab.cfg used.
As for the skimming, the script will submit jobs only for datasets for which the line
ConfigHandler(generator, lumi, rgsp, eff, parametersList, dataset, njobs, uiworkingdir, sewhitelist)
is uncommented.
Output
The code will dump out several root files (one for each job). They have to be merged in the following way (
hadd is a good tool for this):
ALL.root: all files
PomWigDiJets.root: Signal files
QCD.root: Background files
plotProducer.C
is a ROOT macro which will create multiplicity and kinematical plots.
There are a few things to be configured before running the macro:
kinPlotsFolders.push_back("OfflineKinPlotsHf1Castor100");
define directories (inside the root files, check them) to be opened to produce kinematical plots. They need to exist inside the ROOT file and correspond to different threshold levels configured in
crabCallerAna_Skim_Fast_v1.py.
data_[0] = "sdDijetsPlotterInfHf2Castor100";
data_[1] = "sdDijetsPlotterInfRandomHf2Castor100";
//data_[2] = "N^{ max}_{ track} = Inf";
data_[2] = "No N^{ max}_{ track} cut";
multPlotsFolders.push_back(data_[0]);
multPlotsFoldersRandom.push_back(data_[1]);
multPlotsTitles.push_back(data_[2]);
data_[0] = "sdDijetsPlotter5Hf33Castor100";
data_[1] = "sdDijetsPlotter5RandomHf33Castor100";
data_[2] = "N^{ max}_{ track} = 5";
//data_[2] = "No N^{ max}_{ track} cut";
multPlotsFolders.push_back(data_[0]);
multPlotsFoldersRandom.push_back(data_[1]);
multPlotsTitles.push_back(data_[2]);
do the same for multiplicity plots. Each block corresponds to a different HF - CASTOR threshold configuration, but with the additional parameter n_track cut. In the examples above, the first block corresponds to an HF threshold of 0.2
GeV, a CASTOR threshold of 10
GeV and no track cut (
Inf); the second block corresponds to an HF threshold of 3.3
GeV, a CASTOR threshold of 10.0
GeV and an n_track cut = 5.
To execute the macro type
root -b -q plotProducer.C
In the end there will be a set of directories, each corresponding to a different type of plot (kinematical of multiplicity), HF and CASTOR threshold level and n_track cut.
Contact
Responsible: Main.Grzegorz.Brona
Last reviewed by:
Never reviewed