Phase 1 Failure Scenario procedure
Recipe sent to DQM development guys about the Failure scenarios
% --------------------------------------------------------------------------------------------------------------------
export SCRAM_ARCH=slc6_amd64_gcc530
cmsrel CMSSW_8_1_0
cd CMSSW_8_1_0/src
cmsenv
git cms-addpkg CondTools/SiPixel
git clone git@github.com:jkarancs/PhaseIPixelNtuplizer.git DPGAnalysis/PhaseIPixelNtuplizer
% --------------------------------------------------------------------------------------------------------------------
The dead components of the detector are stored in a DB object called SiPixelQuality. In this you can list the detid-s and the type of failure (whole module, half module, single roc)
in the
CMSSW_8_1_0/src/CondTools/SiPixel/test/
directory you can find a file named
SiPixelBadModuleByHandBuilder_cfg.py
This is an example of a whole module: https://github.com/tvami/SiPixelQualtiyValidation/blob/master/0SiPixelBadModuleByHandBuilder_cfg_v25.py#L48-L51
a half module: https://github.com/tvami/SiPixelQualtiyValidation/blob/master/0SiPixelBadModuleByHandBuilder_cfg_v25.py#L38-L41
and a ROC: https://github.com/tvami/SiPixelQualtiyValidation/blob/master/0SiPixelBadModuleByHandBuilder_cfg_v33.py#L135-L139
You should also modify the tag name:
https://github.com/cms-sw/cmssw/blob/master/CondTools/SiPixel/test/SiPixelBadModuleByHandBuilder_cfg.py#L30
Creating the DB object works with the cmsRun:
cmsRun SiPixelBadModuleByHandBuilder_cfg.py
% --------------------------------------------------------------------------------------------------------------------
For the MC simulation you should use a modification of the run_PhaseIPixelNtuplizer_MinBias_cfg.py file in the DPGAnalysis/PhaseIPixelNtuplizer directory.
I attach a modified one. Please look at the lines 182-199.
Line 190 is your local (just created db file), l195 is the tag name that you again just modified and the "es_prefer_Quality" is responsible for the fact that we don't want to use the official conditions but the ones that you just created.
If line 160 saveRECO = True is true then the RECO file will be saved (as far as I know, you need this)
% --------------------------------------------------------------------------------------------------------------------
You should run this on the grid:
source /cvmfs/cms.cern.ch/crab3/crab.csh
and the attached config file.
you should modify outLFNDirBase to your dir.
Also you might want to change totalUnits and unitsPerJob. The ration of the two defines the number of jobs in the grid.
inputFiles is the db that you created in the previous steps
Most of the other things are self-explanary by their names.
- Failing ROCs not listed under "Known Problems":
-- FPix_BpI_D2_BLD2_PNL1_PLQ1_ROC0 (completely new)
-- BPix_BmO_SEC1_LYR3_LDR3F_MOD3_ROC5 (already seen in the past)
Unkown:
BPix_BpI_SEC3_LYR1_LDR4F_MOD3_ROC2 - bad levels
BPix_BmI_SEC5_LYR1_LDR6F_MOD3_ROC0 - bad levels
Bpix_BmO_SEC1_LYR3_LDR3F_MOD3_ROC5 - bad levels
Already known:
BPix_BpO_SEC4_LYR2_LDR8F_MOD1_ROC3 - disabled (BBB)
BPix_BpI_SEC2_LYR3_LDR6F_MOD1_ROC14 - disabled (no hits)
BPix_BmO_SEC8_LYR1_LDR9F_MOD4_ROC[8-15] (TBM-B) - out (known)
BPix_BmO_SEC4_LYR2_LDR8F_MOD4_ROC7 - disabled (BBB)
BPix_BmO_SEC3_LYR2 - out
Bpix_BmI_SEC6_LYR3_LDR14F_MOD4_ROC11 - out (generates BUSY)
FPix_BmO_D2_BLD10_PNL1_PLQ2_ROC4 - disabled (newly in detconfig 212)
FPix_BpO_D1_BLD5_PNL2_PLQ2_ROC6 - disabled
!!!!!!!!
FPix_BmO_D2_BLD10_PNL1_PLQ2_ROC4
!!!!!!!!
Procedure
Environment
# create a new directory with an appropriate name
# choose a run on which the data validation will be done, let's refer to it as $run$
https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary
# Need to choose a collision run, the button "for the last 24 hours" is a good starting point, but of course the main thing is that the run should be later then the module was switched off.
# One can also set up the date intervals in the webpage
grid-proxy-init
das_client --query="dataset run=$run$" --limit=0 | grep "/FEVT"
# choose the FEVT dataset
# in case that is not yet avaible
# das_client --query="das_client --query="dataset run=$run$" --limit=0 | grep "/RECO" | grep "Zero"
" and choose the RECO
# lets refer to the found dataset as $dataset$ now
# check the following, this must give back the dataset
das_client --query="dataset dataset=$dataset$ run=$run$"
# check whether the dataset is avaible on disk or not, this query must give back at least one T2 site. Otherwise, choose an other dataset.
das_client --query="site dataset=$dataset$" --limit=0
# check the release
das_client --query="release dataset=$dataset$"
# let's choose the most recent one and now refer to it as $release$
cmsrel $release$
cd $release$/src
cmsenv
git cms-addpkg CondTools/SiPixel
git clone https://github.com/jkarancs/PixelTimingStudy DPGAnalysis/PixelTimingStudy
vim DPGAnalysis/PixelTimingStudy/plugins/TimingStudy.cc
#define COMPLETE 0
#define SPLIT 2
vim DPGAnalysis/PixelTimingStudy/plugins/TimingStudy.h
#define COMPLETE 0
scram b -j 10
New Quality payload generation
cd CondTools/SiPixel/test
# choose the most recent config from git using the link below
https://github.com/tvami/SiPixelQualtiyValidation
# let me note the version number now like $xy$
wget https://raw.githubusercontent.com/tvami/SiPixelQualtiyValidation/master/0SiPixelBadModuleByHandBuilder_cfg_v$xy$.py
# add the new bad module(s) to a new file
cp 0SiPixelBadModuleByHandBuilder_cfg_v$xy$.py 0SiPixelBadModuleByHandBuilder_cfg_v$xy+1$.py
vim 0SiPixelBadModuleByHandBuilder_cfg_v$xy+1$.py
# edit the following lines
connect = cms.string('sqlite_file:SiPixelQuality_v$xy+1$.db'),
toPut = cms.VPSet(cms.PSet(
record = cms.string('SiPixelQualityFromDbRcd'),
tag = cms.string('SiPixelQuality_v$xy+1$')
# add a new bad module using
cms.PSet(
errortype = cms.string('$type$'),
detid = cms.uint32($detid$)
),
# $type$ could be none/tbmA/tbmB/whole
# $detid$ can be learned from
https://tvami.web.cern.ch/tvami/projects/PixelBadModules/phase0GeometryTopology.txt
cmsRun 0SiPixelBadModuleByHandBuilder_cfg_v$xy+1$.py
uploadConditions.py SiPixelQuality_v$xy+1$.db
# upload the sqlite to Prep answering the following way
Answer [y]: y
inputTag [0]: 0
destinationDatabase: oracle://cms_orcoff_prep/CMS_CONDITIONS
since []:
userText []: New pixel bad module list
destinationTag []: SiPixelQuality_v$xy+1$
# where $xy+1$ is the next version number
Answer [n]: y
# upload the new python to the git using the link below
https://github.com/tvami/SiPixelQualtiyValidation/upload/master
MC Validation
mkdir MC
cd MC/
# create the crab config -- dont forget to change the $user$ and the $xy+1$ the other should be ok like this
vim crab_config.py
from CRABClient.UserUtilities import config
config = config()
config.section_('General')
config.General.requestName = 'SiPixelQuality_MCValidation_v$xy+1$'
config.General.transferOutputs = True
config.General.transferLogs = True
config.section_('JobType')
config.JobType.pluginName = 'Analysis'
config.JobType.psetName = 'TimingStudy_MCValidation_cfg.py'
config.JobType.outputFiles = ['Ntuple.root']
config.JobType.allowUndistributedCMSSW = True
config.section_('Data')
config.Data.inputDBS = 'phys03'
config.Data.inputDataset = '/MinBias/tvami-MC_GENSIMDIG2RAW_20k_PerfectDet-b9e9bfc52642b2ceb34895d495556bcd/USER'
config.Data.splitting = 'LumiBased'
config.Data.unitsPerJob = 2
config.Data.outLFNDirBase = '/store/user/$user/QualityValidation/'
config.Data.outputDatasetTag = config.General.requestName
config.section_('Site')
config.Site.storageSite = 'T2_HU_Budapest'
wget https://raw.githubusercontent.com/tvami/SiPixelQualtiyValidation/master/TimingStudy_MCValidation_cfg.py
# edit it
# make sure this is True: process.siPixelDigis.UseQualityInfo = cms.bool(True)
#edit this line to the appropiate version number $xy+1$
toGet = cms.VPSet(
cms.PSet(
record = cms.string('SiPixelQualityFromDbRcd'),
tag = cms.string('SiPixelQuality_v$xy+1$') # local file tag name
)
source /cvmfs/cms.cern.ch/crab3/crab.csh
crab submit -c crab_config.py
Now lets wait until CRAB finishes the job. In the meantime one can start the data validation
crab status -d SiPixelQuality_MCValidation_v$xy+1$
crab getoutput -d SiPixelQuality_MCValidation_v$xy+1$
mv SiPixelQuality_MCValidation_v$xy+1$/results/*.root .
Data Validation
# go back to the /src directory
cd ..
mkdir Data
# other crab python for data reco
# don't forget to modify $xy+1$, $dataset$, $run$, $user$, $GT$ variables, $GT$ can be learn the following way
# go to
https://cmsweb.cern.ch/das/
#enter the dataset name like
config dataset=$dataset$
# click to the "cmsRun" thing
# look for "global_tag":
vim crab_config.py
import os
import glob
from WMCore.Configuration import Configuration
config = Configuration()
PTSdir = os.environ['CMSSW_BASE']+'/src/DPGAnalysis/PixelTimingStudy/'
config.section_('General')
config.General.transferOutputs = True
config.General.transferLogs = True
config.General.requestName = 'SiPixelQuality_DataValidation_v$xy+1$' #can be anything
config.section_('JobType')
config.JobType.allowUndistributedCMSSW = True
config.JobType.pluginName = 'Analysis'
config.JobType.psetName = PTSdir+'test/TimingStudy_RunIIData_80X_cfg.py'
config.JobType.pyCfgParams = ['globalTag='$GT$]
config.JobType.inputFiles = [ PTSdir+'portcardmap.dat', PTSdir+'run_ls_instlumi_pileup_2015.txt' ]
config.JobType.outputFiles = ['Ntuple.root']
config.JobType.disableAutomaticOutputCollection = True
config.section_('Data')
config.Data.inputDataset = '$dataset$ '
config.Data.outLFNDirBase = '/store/user/$user$/QualityValidation/'
config.Data.outputDatasetTag = config.General.requestName
config.Data.splitting = 'LumiBased'
config.Data.unitsPerJob = 2
config.Data.runRange = '$run$'
config.section_('Site')
config.Site.storageSite = 'T2_HU_Budapest'
source /cvmfs/cms.cern.ch/crab3/crab.csh
crab submit -c crab_config.py
#Now lets wait until CRAB finishes the same amount of job as the MC (ie dont have to wait for until the whole dataset is digested).
crab status -d SiPixelQuality_DataValidation_v$xy+1$
crab getoutput -d SiPixelQuality_DataValidation_v$xy+1$
mv SiPixelQuality_DataValidation_v$xy+1$/results/*.root .
Plotting the results
cd $release$/src/MC/
cmsenv
wget https://raw.githubusercontent.com/tvami/SiPixelQualtiyValidation/master/ROC_Occupancy.C
root ROC_Occupancy.C
>> .q
root output.root
>> gStyle->SetPalette(1);
>> gStyle->SetOptStat(0);
>> TBrowser f
# save as a png with the name of v$xy"_occupancyMap.png
cd $release$/src/Data/
wget https://raw.githubusercontent.com/tvami/SiPixelQualtiyValidation/master/ROC_Occupancy.C
root ROC_Occupancy.C
root output.root
gStyle->SetPalette(1);
gStyle->SetOptStat(0);
TBrowser f
# save as a png with the name of v$xy"_occupancyMap_data.png
Procedure (w/o description)
Environment
https://cmswbm.web.cern.ch/cmswbm/cmsdb/servlet/RunSummary
grid-proxy-init
das_client --query="dataset run=$run$" --limit=0 | grep "/FEVT"
das_client --query="dataset dataset=$dataset$ run=$run$"
das_client --query="release dataset=$dataset$"
cmsrel $release$
cd $release$/src
cmsenv
git cms-addpkg CondTools/SiPixel
git clone https://github.com/jkarancs/PixelTimingStudy DPGAnalysis/PixelTimingStudy
vim DPGAnalysis/PixelTimingStudy/plugins/TimingStudy.cc
#define COMPLETE 0
#define SPLIT 2
vim DPGAnalysis/PixelTimingStudy/plugins/TimingStudy.h
#define COMPLETE 0
scram b -j 10
New Quality payload generation
cd CondTools/SiPixel/test
https://github.com/tvami/SiPixelQualtiyValidation
wget https://raw.githubusercontent.com/tvami/SiPixelQualtiyValidation/master/0SiPixelBadModuleByHandBuilder_cfg_v$xy$.py
cp 0SiPixelBadModuleByHandBuilder_cfg_v$xy$.py 0SiPixelBadModuleByHandBuilder_cfg_v$xy+1$.py
vim 0SiPixelBadModuleByHandBuilder_cfg_v$xy+1$.py
connect = cms.string('sqlite_file:SiPixelQuality_v$xy+1$.db'),
toPut = cms.VPSet(cms.PSet(
record = cms.string('SiPixelQualityFromDbRcd'),
tag = cms.string('SiPixelQuality_v$xy+1$')
# add a new bad module using
cms.PSet(
errortype = cms.string('$type$'),
detid = cms.uint32($detid$)
),
https://tvami.web.cern.ch/tvami/projects/PixelBadModules/phase0GeometryTopology.txt
cmsRun 0SiPixelBadModuleByHandBuilder_cfg_v$xy+1$.py
uploadConditions.py SiPixelQuality_v$xy+1$.db
Answer [y]: y
inputTag [0]: 0
destinationDatabase: oracle://cms_orcoff_prep/CMS_CONDITIONS
since []:
userText []: New pixel bad module list
destinationTag []: SiPixelQuality_v$xy+1$
# where $xy+1$ is the next version number
Answer [n]: y
https://github.com/tvami/SiPixelQualtiyValidation/upload/master
MC Validation
mkdir MC
cd MC/
vim crab_config.py
from CRABClient.UserUtilities import config
config = config()
config.section_('General')
config.General.requestName = 'SiPixelQuality_MCValidation_v$xy+1$'
config.General.transferOutputs = True
config.General.transferLogs = True
config.section_('JobType')
config.JobType.pluginName = 'Analysis'
config.JobType.psetName = 'TimingStudy_MCValidation_cfg.py'
config.JobType.outputFiles = ['Ntuple.root']
config.JobType.allowUndistributedCMSSW = True
config.section_('Data')
config.Data.inputDBS = 'phys03'
config.Data.inputDataset = '/MinBias/tvami-MC_GENSIMDIG2RAW_20k_PerfectDet-b9e9bfc52642b2ceb34895d495556bcd/USER'
config.Data.splitting = 'LumiBased'
config.Data.unitsPerJob = 2
config.Data.outLFNDirBase = '/store/user/$user/QualityValidation/'
config.Data.outputDatasetTag = config.General.requestName
config.section_('Site')
config.Site.storageSite = 'T2_HU_Budapest'
wget https://raw.githubusercontent.com/tvami/SiPixelQualtiyValidation/master/TimingStudy_MCValidation_cfg.py
toGet = cms.VPSet(
cms.PSet(
record = cms.string('SiPixelQualityFromDbRcd'),
tag = cms.string('SiPixelQuality_v$xy+1$') # local file tag name
)
source /cvmfs/cms.cern.ch/crab3/crab.csh
crab submit -c crab_config.py
crab status -d SiPixelQuality_MCValidation_v$xy+1$
crab getoutput -d SiPixelQuality_MCValidation_v$xy+1$
mv SiPixelQuality_MCValidation_v$xy+1$/results/*.root .
Data Validation
cd ..
mkdir Data
https://cmsweb.cern.ch/das/
config dataset=$dataset$
import os
import glob
from WMCore.Configuration import Configuration
config = Configuration()
PTSdir = os.environ['CMSSW_BASE']+'/src/DPGAnalysis/PixelTimingStudy/'
config.section_('General')
config.General.transferOutputs = True
config.General.transferLogs = True
config.General.requestName = 'SiPixelQuality_DataValidation_v$xy+1$' #can be anything
config.section_('JobType')
config.JobType.allowUndistributedCMSSW = True
config.JobType.pluginName = 'Analysis'
config.JobType.psetName = PTSdir+'test/TimingStudy_RunIIData_80X_cfg.py'
config.JobType.pyCfgParams = ['globalTag='$GT$]
config.JobType.inputFiles = [ PTSdir+'portcardmap.dat', PTSdir+'run_ls_instlumi_pileup_2015.txt' ]
config.JobType.outputFiles = ['Ntuple.root']
config.JobType.disableAutomaticOutputCollection = True
config.section_('Data')
config.Data.inputDataset = '$dataset$ '
config.Data.outLFNDirBase = '/store/user/$user$/QualityValidation/'
config.Data.outputDatasetTag = config.General.requestName
config.Data.splitting = 'LumiBased'
config.Data.unitsPerJob = 2
config.Data.runRange = '$run$'
config.section_('Site')
config.Site.storageSite = 'T2_HU_Budapest'
source /cvmfs/cms.cern.ch/crab3/crab.csh
crab submit -c crab_config.py
crab status -d SiPixelQuality_DataValidation_v$xy+1$
crab getoutput -d SiPixelQuality_DataValidation_v$xy+1$
mv SiPixelQuality_DataValidation_v$xy+1$/results/*.root .
Plotting the results
cd $release$/src/MC/
cmsenv
wget https://raw.githubusercontent.com/tvami/SiPixelQualtiyValidation/master/ROC_Occupancy.C
root ROC_Occupancy.C
>> .q
root output.root
>> gStyle->SetPalette(1);
>> gStyle->SetOptStat(0);
>> TBrowser f
# save as a png with the name of v$xy"_occupancyMap.png
cd $release$/src/Data/
wget https://raw.githubusercontent.com/tvami/SiPixelQualtiyValidation/master/ROC_Occupancy.C
root ROC_Occupancy.C
root output.root
>> gStyle->SetPalette(1);
>> gStyle->SetOptStat(0);
>> TBrowser f
# save as a png with the name of v$xy"_occupancyMap_data.png
Tracking effect
/data/vami/projects/pilotBlade/pp2016ReProcessing_v3/CMSSW_8_0_8/src/miniDAQ/All/Ntuples
TimingStudy
TChain chain("trajTree");
chain.Add("Ntuple*.root")
h1(416,-3.0,3.0,160,-.55,.55)
# -------------------------------------------------------------------------------------------------------------------
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module_on.rawid==302059012&&traj.validhit==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module_on.rawid==302059012&&traj.missing==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module_on.rawid==302059012&&traj_inactive==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module_on.rawid==302059012&&traj_badhit==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(416,-3.0,3.0,160,-.55,.55)","module_on.rawid==302059012&&traj.validhit==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(416,-3.0,3.0,160,-.55,.55)","module_on.rawid==302059012&&traj.missing==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(416,-3.0,3.0,160,-.55,.55)","module_on.rawid==302059012&&traj_inactive==1&&traj_onedge==0","COLZ")
TChain chain("clustTree");
chain.Add("Ntuple*.root")
chain.Draw("x:y","module_on.rawid==302059012","COLZ") // all clusters
# -------------------------------------------------------------------------------------------------------------------
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module_on.rawid==302126344&&traj.validhit==0&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module_on.rawid==302126344&&traj.missing==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module_on.rawid==302126344&&traj_inactive==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module_on.rawid==302126344&&traj_badhit==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(416,-3.0,3.0,160,-.55,.55)","module_on.rawid==302126344&&traj.validhit==0&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(416,-3.0,3.0,160,-.55,.55)","module_on.rawid==302126344&&traj.missing==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(416,-3.0,3.0,160,-.55,.55)","module_on.rawid==302126344&&traj_inactive==1&&traj_onedge==0","COLZ")
TChain chain("clustTree");
chain.Add("Ntuple*.root")
chain.Draw("x:y","module_on.rawid==302126344","COLZ") // all clusters
# -------------------------------------------------------------------------------------------------------------------
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module_on.rawid==302123800&&traj.validhit==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module_on.rawid==302123800&&traj.missing==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module_on.rawid==302123800&&traj_inactive==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module_on.rawid==302123800&&traj_badhit==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(416,-3.0,3.0,160,-.55,.55)","module_on.rawid==302123800&&traj.validhit==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(416,-3.0,3.0,160,-.55,.55)","module_on.rawid==302123800&&traj.missing==1&&traj_onedge==0","COLZ")
chain.Draw("traj.lx:traj.ly>>h1(416,-3.0,3.0,160,-.55,.55)","module_on.rawid==302123800&&traj_inactive==1&&traj_onedge==0","COLZ")
TChain chain("clustTree");
chain.Add("Ntuple*.root")
chain.Draw("x:y","module_on.rawid==302123800","COLZ") // all clusters
What happens with modules marked bad that come alive from time to time?
Studying the valid/traj_missing/traj_inactive modules in three scenarios
Scenario 1) We have a new bad component but it is not included in the DB yet
--> in
SiPixelQuality_v34_data we had a new bad half module (
BmO _Sec8_Lyr1_Ldr9F_Mod4 (TBM-B) -- 302059012)
- Run range 275891 (the moduel is bad from this run) - 275914 (hlt tag was accepted and uploaded, in the meantime there was a half module that was bad but the DB did not contain it)
TChain chain("trajTree");
chain.Add("nTuplePilotBlade_All*.root")
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module.rawid==302059012&&traj.type==0&&traj.onEdge==0","COLZ") // validhit
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module.rawid==302059012&&traj.type==1&&traj.onEdge==0","COLZ") // missing
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module.rawid==302059012&&traj.type==2&&traj.onEdge==0","COLZ") // inactive
chain.Draw("traj.lx:traj.ly>>h1(416,-3.0,3.0,160,-.55,.55)","module.rawid==302059012&&traj.type==0&&traj.onEdge==0","COLZ") // valid pixels
Scenario 2) We have a bad component and it is included in the DB already
--> in
SiPixelQuality_v34_data an old half module (BPix_BmO_SEC7_LYR2_LDR13F_MOD3 (ROC0-7) -- 302126344 [this was added in v33])
- Run range 275891-275914 (same range is OK)
TChain chain("trajTree");
chain.Add("nTuplePilotBlade_All*.root")
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module.rawid==302126344&&traj.type==0&&traj.onEdge==0","COLZ") // validhit
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module.rawid==302126344&&traj.type==1&&traj.onEdge==0","COLZ") // missing
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module.rawid==302126344&&traj.type==2&&traj.onEdge==0","COLZ") // inactive
chain.Draw("traj.lx:traj.ly>>h1(416,-3.0,3.0,160,-.55,.55)","module.rawid==302126344&&traj.type==0&&traj.onEdge==0","COLZ") // valid pixels
chain.Draw("traj.lx:traj.ly>>h1(416,-3.0,3.0,160,-.55,.55)","module.rawid==302126344&&traj.type==1&&traj.onEdge==0","COLZ") // missing pixels
Scenario 3) A module is marked bad although it is working
--> v35_data (302123800)
- Run range 276460-276870 (after this the mistake was corrected)
TChain chain("trajTree");
chain.Add("nTuplePilotBlade_All*.root")
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module.rawid==302123800&&traj.type==0&&traj.onEdge==0","COLZ") // validhit
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module.rawid==302123800&&traj.type==1&&traj.onEdge==0","COLZ") // missing
chain.Draw("traj.lx:traj.ly>>h1(8,-3.0,3.0,2,-.55,.55)","module.rawid==302123800&&traj.type==2&&traj.onEdge==0","COLZ") // inactive
Additional info
BmO : negative module/disk, negative ladder/blade
BmI : negative module/disk, positive ladder/blade
BpO : positive module/disk, negative ladder/blade
BpI : positive module/disk, positive ladder/blade