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.

v39 ToDo

- 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

TimingStudy

/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

Edit | Attach | Watch | Print version | History: r33 < r32 < r31 < r30 < r29 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r33 - 2017-11-15 - TamasVami
 
This site is powered by the TWiki collaboration platform Powered by Perl This site is powered by the TWiki collaboration platformCopyright &© by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback