Usefull Tricks
Config files tricks
# Desciption: example how to set up many input files. After 255 files put the next files to the .extend part
import FWCore.ParameterSet.Config as cms
myfilelist = cms.untracked.vstring()
myfilelist.extend([
'file:/data/vami/projects/pilotBlade/ppProcessing/Results/PilotMinBias_13TeV_cfi_py_RAW2DIGI_L1Reco_RECO2900Event.root',
])
#myfilelist.extend([
# ])
FileNames = myfilelist
DQM tricks
A way to get just the histograms you are interested in from
the DQMGUI.
From lxplus, do:
cmsrel CMSSW_9_4_0
cd CMSSW_9_4_0/src/
cmsenv
dqm-access -w -c -f '/PixelPhase1/Phase1_MechanicalView/PXBarrel/digi_occupancy_*_PXLayer_*' -e "match('/ZeroBias1/Run2017G-PromptReco-v.*/DQMIO',dataset)" -s https://cmsweb.cern.ch/dqm/offline/data/json
dqm-access --help | less
The last command can be generalized, e.g.:
- If you want to fetch histograms from all periods, use Run2017.* instead of Run2017G (this is a plain regular expression, you can assemble the one you like)
- If you are interested in the forward too, I'd suggest making a second query (if you repeat the same command with a different histogram target, the output file in your local directory will be overwritten...)
- if you are interested only in some specific run, you could use: -e "run == XYZ and match...."
LA tree production
Pixel tree production
Setup procedure is explained here
https://github.com/BenjaminMesic/PixelTree-ProductionTool
(instructions.txt is deprecated so ignore it please)
After you finish setup, open TreeProduction.py and set these four lines
https://github.com/BenjaminMesic/PixelTree-ProductionTool/blob/master/TreeProduction.py#L16-L19
(CMSSW is not mandatory but is ok for bookkeeping.)
After you did all that just run the script. It will create bunch of scripts (in batch folder) ready to be sent on batch.
Before sending you can just open one python script and see if everything is done correctly. You
can even change number of events to e.g. 5 and run script interactively.
How does script actually creates jobs?
There is the template script which is used for making jobs.
https://github.com/BenjaminMesic/PixelTree-ProductionTool/blob/master/templates/pixel.py
(Note that there are many different templates but only one which is called pixel.py is actually used,
other templates are used for different configurations, i.e. cosmics, VCAL, etc... Most recent are
ones which have phase1 in its name. If you want to use other template, it must be called pixel.py)
If you are going to send jobs, they will be automatically stored on EOS
https://github.com/BenjaminMesic/PixelTree-ProductionTool/blob/master/TreeProduction.py#L33
I don't know if you have permissions to store there. Anyway, you need to manually create directory
(from line 33) on EOS. In case you wish to make files on EOS, please fill the google doc what you did so
that I can follow what is going on.
Right now, sending jobs is not configurable as a variable so you need to (un)comment
https://github.com/BenjaminMesic/PixelTree-ProductionTool/blob/master/TreeProduction.py#L235
in order to send jobs.
LA plots production
root -l -b -q 'LALayer.C("input.list",1,"outfile.root")'
input list is the txt file with the list of files with the LA trees (it can be also one root file, in that case second argument should be 0).
Third argument is the output root file with the histograms.
The 2017 LA trees are stored in the eos directory:
/eos/cms/store/group/dpg_tracker_pixel/comm_pixel/LATrees/2017/
Linux tricks
du -hsx * | sort -rh | head -10
locate "*.root" | grep "/data/vami/backup/vami/projects/*" > rootFiles.txt
Changing paylaoads
# ----------------------------------------------------------------------
process.GlobalTag.toGet = cms.VPSet(
cms.PSet(
record = cms.string("#RecordName1"),
tag = cms.string("#TagName1"),
connect = cms.untracked.string("frontier://FrontierProd/CMS_CONDITIONS)
),
cms.PSet(
record = cms.string("#RecordName2"),
tag = cms.string("#TagName2"),
connect = cms.untracked.string("frontier://FrontierProd/CMS_CONDITIONS")
)
)
# ----------------------------------------------------------------------
edm Tricks
edmConfigDump your_cfg.py > dumped_cfg.py
CRAB notes
config.JobType.pyCfgParams = ['globalTag=80X_mcRun2_...']
['valami=1', 'masik=2', 'harmadik=3']
AlCaDB contact notes
All DB test config
cmsDriver.py -s GEN,SIM,DIGI,L1,DIGI2RAW,RAW2DIGI,L1Reco,RECO --evt_type MinBias_13TeV_pythia8_TuneCUETP8M1_cfi --conditions auto:phase1_2017_realistic --era Run2_2017 --geometry DB:Extended --fileout file:GENSIMRECO_MinBias.root --python_filename=PhaseI_MinBias_cfg.py --runUnscheduled -n 10
https://github.com/jkarancs/PhaseIPixelNtuplizer/blob/1a635835a54364a467758f4550215798b1e28208/test/run_PhaseIPixelNtuplizer_MinBias_cfg.py
https://github.com/cms-analysis/DPGAnalysis-SiPixelTools/blob/master/PixelHitAssociator/phase1/run_PixelHitAssociator_PhaseI_MuPt10_cfg.py
Options to run this:
cmsRun phase1/run_PixelHitAssociator_PhaseI_MuPt10_cfg.py saveRECO=1 useTemplates=0 useLocalLASim=1 useLocalLA=1 useLocalGenErr=1 useLocalTemplates=1 maxEvents=10000 noMagField=1 outputFileName=gen_phase1_91X_MC0T_10k.root
cmsRun phase1/run_PixelHitAssociator_PhaseI_MuPt10_cfg.py saveRECO=1 useTemplates=1 useLocalLASim=1 useLocalLA=1 useLocalGenErr=1 useLocalTemplates=1 maxEvents=10000 noMagField=1 outputFileName=tem_phase1_91X_MC0T_10k.root
Adat:
cmsRun phase1/run_PixelHitAssociator_PhaseI_MuPt10_cfg.py saveRECO=1 useTemplates=0 useLocalLASim=1 useLocalLA=1 useLocalGenErr=1 useLocalTemplates=1 maxEvents=10000 outputFileName=gen_phase1_91X_Data38T_10k.root
cmsRun phase1/run_PixelHitAssociator_PhaseI_MuPt10_cfg.py saveRECO=1 useTemplates=1 useLocalLASim=1 useLocalLA=1 useLocalGenErr=1 useLocalTemplates=1 maxEvents=10000 outputFileName=tem_phase1_91X_Data38T_10k.root
Template&GenErr DB resolutions
https://github.com/cms-analysis/DPGAnalysis-SiPixelTools/blob/master/PixelHitAssociator/MCResolution.C#L70-L71
https://github.com/cms-analysis/DPGAnalysis-SiPixelTools/blob/master/PixelHitAssociator/MCResolution.C#L120-L130
LA DB
Geometrical coordinates are defined in:
https://github.com/cms-analysis/DPGAnalysis-SiPixelTools/blob/master/PixelDBTools/test/SiPixelLorentzAngleDBLoader.cc#L109-L126
Exceptions are to be defined from rawID:
https://github.com/cms-analysis/DPGAnalysis-SiPixelTools/blob/master/PixelDBTools/test/SiPixelLorentzAngleDBLoader.cc#L96-L107
conddb notes
Downloading tags
conddb_import -f frontier://FrontierProd/CMS_CONDITIONS -i 'SiPixelGenErrorDBObject_38T_v1_offline' -c sqlite:SiPixelGenErrorDBObject_38T_v2_offline.db -t 'SiPixelGenErrorDBObject_38T_v2_offline' -b '197749' -e '200960'
Comperison of two sqlites
conddb list SiPixelDynamicInefficiency_13TeV_50ns_v2_mc // from FrontierProd
conddb --db /afs/cern.ch/cms/CAF/CMSALCA/ALCA_TRACKERCALIB/Pixels/PixelDB2015/6SiPixelDynamicInefficiency/siPixelDynamicInefficiency_13TeV_50ns_v2_mc.db list SiPixelDynamicInefficiency_13TeV_50ns_v2_mc // from local file
both of them give the hash.
$ conddb dump 1fc23c8994620aa9d47d27baa9f0af4e99e76909 > 1fc23c8994620aa9d47d27baa9f0af4e99e76909.xml
$ conddb dump 5a9e60ee4edc52188da96e384da8fb2bccee30b4 > 5a9e60ee4edc52188da96e384da8fb2bccee30b4.xml
diff 1fc23c8994620aa9d47d27baa9f0af4e99e76909.xml 5a9e60ee4edc52188da96e384da8fb2bccee30b4.xml73c73
Root notes
Standard things
htemp->GetXaxis()->SetRangeUser(-1.7,1.7);
TCanvas *c2_2 = new TCanvas("c2_2", "2_2",0,0,1355,523);
TH2D (const char *name, const char *title,
Int_t nbinsx, Double_t xlow, Double_t xup,
Int_t nbinsy, Double_t ylow, Double_t yup)
Custum canvas
TH2* h, std::string canname,
int gx = 0, int gy = 0,
int histosize_x = 500, int histosize_y = 500,
int mar_left = 80, int mar_right = 120,
int mar_top = 20, int mar_bottom = 60,
int title_align = 33, float title_y = 1.0, float title_x = 1.0,
std::string draw="COLZ", bool norm=false, bool log=false
Some explanations:
- title_align could be 11, 12, 13, 31, 32, 33 (upper right) For horizontal alignment the following convention applies: 1=left adjusted, 2=centered, 3=right adjusted For vertical alignment the following convention applies: 1=bottom adjusted, 2=centered, 3=top adjusted
prelim_lat_(double xmin, double xmax, double ymin, double ymax, bool in, double scale = -1)
draw_lat_(250, 198.0, "Module X", 1, 0.04, 0.0, 21);
--
TamasVami - 2016-01-14