Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
3833450
migration to CMSSW_12_4_6 in progress
matt628 Aug 23, 2022
9f38cd9
import geometry from db
matt628 Aug 24, 2022
2126573
added logging
matt628 Aug 24, 2022
cc7a1cb
debuging loggs for DiamondDet.GetTime L311
matt628 Aug 24, 2022
16d6630
updating harvester tags and simplifications for local testing
matt628 Aug 26, 2022
0661fdd
Readme update
matt628 Aug 26, 2022
ba876d4
worker - added flag to save to dqm
matt628 Aug 26, 2022
d08f8d3
added logging
matt628 Aug 26, 2022
c1ce65e
DiamondDetectorClass.h added methods for debugging
matt628 Aug 26, 2022
a133758
DiamondDetectorClass.cc forcing offset to 0
matt628 Aug 26, 2022
8b5b308
DiamondDetectorClass.cc fix
matt628 Aug 26, 2022
47670d3
EDO suggestion skip if not exactly one hit per plane
matt628 Aug 26, 2022
09e2076
init work on using timing calibration
matt628 Aug 31, 2022
34c1410
worker config added comments and updated filenames for tests
matt628 Sep 1, 2022
f1ee54d
readme update
matt628 Sep 1, 2022
f9ec2ad
debug idea
matt628 Sep 1, 2022
91de985
added cmsrun config for a workflow with time shifg
matt628 Sep 1, 2022
07c1738
DiamondTimingWorker.cc more logs and changes for newWorkflow
matt628 Sep 1, 2022
a4a0798
sqllite conddb
matt628 Sep 1, 2022
bac3e50
gitignore update
matt628 Sep 1, 2022
03279ee
hervester for new workflow
matt628 Sep 1, 2022
7d6af29
wokring version with shigt removed excessive logging
matt628 Sep 2, 2022
99177b9
added run 357479 to process
matt628 Sep 2, 2022
65dd675
file list update sqldatabase
matt628 Sep 6, 2022
dfd0ad1
added file for crab submissions
matt628 Sep 6, 2022
c5ecbe0
minor changes in harvester and worker
matt628 Sep 6, 2022
934fe83
refactor worker for timeshift
matt628 Sep 6, 2022
d01fc3e
worker and harvester to use with sql file
matt628 Sep 12, 2022
78f8f0c
delete cleanup
matt628 Sep 14, 2022
7f9abb2
minor fixes examle config
matt628 Sep 14, 2022
9e04f57
fix harvester2.py
matt628 Sep 14, 2022
8e1dde5
start work on producing shifted AOD
matt628 Sep 14, 2022
4e555e3
rolling calib script
matt628 Sep 14, 2022
742d322
improved temp script for rolling calibrations
matt628 Sep 19, 2022
ae80a2c
init work on producing twiki based time shift
matt628 Sep 20, 2022
f451ecb
minor change in script for debugging
matt628 Sep 21, 2022
d65cc79
SUCCESFUL rolling calibration setup"
matt628 Sep 22, 2022
27d6a1f
added gitingore
matt628 Sep 22, 2022
4ee2bf4
new harvester and worker python config
matt628 Sep 23, 2022
af872e4
minor improvemtns
matt628 Sep 23, 2022
c65ef70
fix harvester - accept root file list
matt628 Sep 27, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,18 @@ __init__.py
# ignore files under the top level $CMSSW_BASE/src directory, but not its subdirectories
/*
!/*/

harvester_log_*.txt
Logs/*
worker_log_*.txt
DQM_V*
OutputFiles/*

*.root
run_output.root
Analyzer/DiamondTimingAnalyzer/run_output.root
crab_DiamondTimingRes*
*.log
temp_rollingcalib/
calib.json
test_*
1 change: 1 addition & 0 deletions Analyzer/DiamondTimingAnalyzer/BuildFile.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
<use name="FWCore/PluginManager"/>
<use name="FWCore/ParameterSet"/>
<use name="DQMServices/Core"/>
<flags CXXFLAGS="-O0 -g -DDEBUG"/>
<export>
<lib name="1"/>
</export>
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
import FWCore.ParameterSet.Config as cms
from Configuration.Eras.Era_Run3_cff import Run3

process = cms.Process('RECODQM', Run3)

process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(90000) )
process.verbosity = cms.untracked.PSet( input = cms.untracked.int32(10) )

# minimum of logs
process.MessageLogger = cms.Service("MessageLogger",
cerr = cms.untracked.PSet(
threshold = cms.untracked.string('INFO')
)
)

# import of standard configurations
process.load('Configuration.StandardSequences.Services_cff')
process.load('FWCore.MessageService.MessageLogger_cfi')
process.load('Configuration.EventContent.EventContent_cff')
process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff')

# load DQM framework
process.load("DQM.Integration.config.environment_cfi")
process.dqmEnv.subSystemFolder = "CTPPS"
process.dqmEnv.eventInfoFolder = "EventInfo"
process.dqmSaver.path = ""
process.dqmSaver.tag = "CTPPS"
#process.dqmSaver.runNumber = 999999


# raw data source
process.source = cms.Source("PoolSource",
fileNames = cms.untracked.vstring(
#'file:/eos/cms/store/data/Run2022B/AlCaPPS/RAW/v1/000/355/207/00000/c23440f4-49c0-44aa-b8f6-f40598fb4705.root',
#'file:/eos/cms/store/group/dpg_ctpps/comm_ctpps/ALCAPPS-RAW/000/355/988/00000/7728d214-b404-4578-b781-b0c207cfb875.root',
#'/store/data/Run2022D/AlCaPPSPrompt/ALCARECO/PPSCalMaxTracks-PromptReco-v2/000/357/900/00000/0434a2eb-2cea-4d83-8b21-fe91b755e62e.root',
# RUN 440 - "357440": [[1,354]],
"/store/data/Run2022C/AlCaPPSPrompt/ALCARECO/PPSCalMaxTracks-PromptReco-v1/000/357/440/00000/53746080-d21b-4fdf-9d19-67c6dae347ac.root",
"/store/data/Run2022C/AlCaPPSPrompt/ALCARECO/PPSCalMaxTracks-PromptReco-v1/000/357/440/00000/b8d3f012-0b59-43b4-adbc-811bcb59c9c4.root",
"/store/data/Run2022C/AlCaPPSPrompt/ALCARECO/PPSCalMaxTracks-PromptReco-v1/000/357/440/00000/cfa9f82a-5296-49cf-8353-11f8761b675c.root",
"/store/data/Run2022C/AlCaPPSPrompt/ALCARECO/PPSCalMaxTracks-PromptReco-v1/000/357/440/00000/db3c6c33-9ad0-4d61-9a64-a1aa9578550e.root" ),
)



from Configuration.AlCa.GlobalTag import GlobalTag
#process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:run2_hlt_relval', '')
process.GlobalTag = GlobalTag(process.GlobalTag, '124X_dataRun3_Prompt_frozen_v4', '')
process.GlobalTag.toGet = cms.VPSet()
process.GlobalTag.toGet.append(
cms.PSet(record = cms.string("PPSTimingCalibrationRcd"),
tag = cms.string("PPSDiamondTimingCalibration_Run3_recovered_v1"),
label = cms.untracked.string('PPSTestCalibration'),
connect = cms.string("frontier://FrontierPrep/CMS_CONDITIONS")
)
)


# raw-to-digi conversion
process.load("EventFilter.CTPPSRawToDigi.ctppsRawToDigi_cff")

process.ctppsPixelDigis.inputLabel = cms.InputTag("hltPPSCalibrationRaw")
process.ctppsDiamondRawToDigi.rawDataTag = cms.InputTag("hltPPSCalibrationRaw")
process.totemRPRawToDigi.rawDataTag = cms.InputTag("hltPPSCalibrationRaw")
process.totemTimingRawToDigi.rawDataTag = cms.InputTag("hltPPSCalibrationRaw")


# local RP reconstruction chain with standard settings
process.load("RecoPPS.Configuration.recoCTPPS_cff")
process.ctppsDiamondRecHits.digiTag=cms.InputTag('ctppsDiamondRawToDigiAlCaRecoProducer:TimingDiamond')
process.ctppsDiamondRecHits.timingCalibrationTag=cms.string("GlobalTag:PPSTestCalibration")

#process.load('CondCore.CondDB.CondDB_cfi')
#process.CondDB.connect = 'sqlite_file:ppsDiamondTiming_calibration.sqlite' # SQLite input
#process.PoolDBESSource = cms.ESSource('PoolDBESSource',
# process.CondDB,
# DumpStats = cms.untracked.bool(True),
# toGet = cms.VPSet(
# cms.PSet(
# record = cms.string('PPSTimingCalibrationRcd'),
# tag = cms.string('DiamondTimingCalibration')
# )
# )
# )

#process.load('Geometry.VeryForwardGeometry.geometryRPFromDD_2021_cfi')
# CTPPS DQM modules
process.load("DQM.CTPPS.ctppsDQM_cff")
process.ctppsDiamondDQMSource.tagDigi=cms.InputTag('ctppsDiamondRawToDigiAlCaRecoProducer:TimingDiamond')
process.ctppsDiamondDQMSource.tagFEDInfo=cms.InputTag('ctppsDiamondRawToDigiAlCaRecoProducer:TimingDiamond')
process.ctppsDiamondDQMSource.tagStatus=cms.InputTag('ctppsDiamondRawToDigiAlCaRecoProducer:TimingDiamond')
process.ctppsDiamondDQMSource.tagPixelLocalTracks=cms.InputTag('ctppsPixelLocalTracksAlCaRecoProducer')
#process.ctppsDiamondDQMSource.excludeMultipleHits = cms.bool(True)
process.ctppsDiamondDQMSource.plotOnline = cms.untracked.bool(True)
process.ctppsDiamondDQMSource.plotOffline = cms.untracked.bool(False)

process.content = cms.EDAnalyzer("EventContentAnalyzer")

from DQMServices.Core.DQMEDAnalyzer import DQMEDAnalyzer
process.tdcCalibShiftDQM = DQMEDAnalyzer('TdcCalibShiftDQM')
process.path = cms.Path(
#process.ctppsRawToDigi*
#process.recoCTPPS*
#process.ctppsDQMOnlineSource*
##process.ctppsDiamondDQMSource*
#process.ctppsDQMOnlineHarvest
#process.tdcCalibShiftDQM

#process.content*
process.ctppsDiamondRecHits *
process.ctppsDiamondLocalTracks *
#process.ctppsLocalTrackLiteProducer *
#process.ctppsProtons *
process.ctppsDiamondDQMSource*
process.ctppsDQMOnlineHarvest
)

process.output = cms.OutputModule("PoolOutputModule",
fileName = cms.untracked.string("file:test.root"),
outputCommands = cms.untracked.vstring(
'drop *',
'keep *_ctpps*_*_*',
),
)


process.end_path = cms.EndPath(
#process.output
process.dqmEnv +
process.dqmSaver
)

process.schedule = cms.Schedule(
process.path,
process.end_path
)

#process.output = cms.OutputModule("PoolOutputModule",
# fileName = cms.untracked.string("AOD.root"),
# outputCommands = cms.untracked.vstring(
# 'drop *',
# 'keep *_ctpps*_*_*',
# ),
#)
#process.outpath = cms.EndPath(process.output)
46 changes: 46 additions & 0 deletions Analyzer/DiamondTimingAnalyzer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
## Project setup
Instruction on how to setup and run efficiency suite in CMSSW_12_4_0 environment:

1. Preprare CMSSW_12_4_0 environment with: `cmsrel CMSSW_12_4_0`
2. Go to newly created directory: `cd CMSSW_12_4_0`
3. Setup cms environmental variables(repeat every time you log in): `cmsenv`
4. Merge with the main branch containing efficiency suite: `git cms-merge-checkout CTPPS:MO/timing/migration_to_CMSSW_12_4_6_clean_branch` #(TODO change it to the main )
5. Compile the solution `scram b -j10`
6. Switch directory to the one containing the source code: `cd src/Analyzer/DiamondTimingAnalyzer`

## Run rolling calibrations:


## More Details:
### Applying time shift
### Finding Test File


## Project Structure
### Config.json
Config.json describes the structure of detectors.
- Sector - left of right arm
- station - the pot in which the detector are located
- plane - the detector contains planes -
- channel - each plane is divided into channels. They are counted in U-shape, due to the phisical connection structure.
## Manual tests
1. Running worker

```bash
cmsRun python/worker.py
```

2. Running harvester
```bash
cmsRun python/harvester.py rootFiles=file:run_output.root
```

Tip - logs to file - append:
```
2>&1 | tee Logs/worker_log_5.txt
```

3. Submit to CRAB:
```cmsemv```
```voms-proxy-init -voms cms -rfc -valid 192:00```
```crab submit submitTimingToCRAB.py ```
10 changes: 10 additions & 0 deletions Analyzer/DiamondTimingAnalyzer/interface/DiamondDetectorClass.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,22 @@ class DiamondDetectorClass{
inline int GetMux(const PlaneKey& planeKey) {return Mux_map_[planeKey];}
inline int GetMuxValidT(const PlaneKey& planeKey) {return Mux_validT_map_[planeKey];}
inline int GetMuxInTrack(const PlaneKey& planeKey) {return Mux_inTrack_map_[planeKey];}
inline std::map<PlaneKey, int> GetMuxInTrackMap() {return Mux_inTrack_map_;}

inline bool PadActive(const ChannelKey& key)
{ return (RecHit_map_.find(key) != RecHit_map_.end());}

inline double GetTime(const ChannelKey& key)
{return RecHit_map_[key].at(0).time();}

inline std::vector<CTPPSDiamondRecHit> getRecHitVector(const ChannelKey& key)
{return RecHit_map_[key];}

inline std::map<ChannelKey, std::vector<CTPPSDiamondRecHit>> getRecHitMap()
{return RecHit_map_;}

inline bool isRecHitEmpty(const ChannelKey& key)
{return RecHit_map_[key].size() == 0;}

inline double GetPadPrecision(const ChannelKey& key)
{return SPC_map_[key].precision;}
Expand Down
29 changes: 29 additions & 0 deletions Analyzer/DiamondTimingAnalyzer/just_shift_print.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#config
runNumber=357440
maxEvents=90000
constPREFIX=JUST_SHIFT
experimentName=_diamondDQM_chrys
try=try4
resultsFolderName=${constPREFIX}_${runNumber}_maxEv${maxEvents}_${experimentName}
#local variables
# workerPrefix=${resultsFolderName}/worker_${constPREFIX}_${runNumber}_maxEv_${maxEvents}
sqlFileName=sqlite_file:/afs/cern.ch/user/m/mobrzut/public/timing_sqlcalib/ppsDiamondTiming_calibration${runNumber}.sqlite
# scritpt
mkdir $resultsFolderName
mkdir $resultsFolderName/$try
echo "######################################## ##########################################"
echo "shift 0:"
echo "ls *.root" # make sure that the directory doesn't contain any root files
shift="cmsRun temp/produceAOD_shift_fromRoot_justShift/reco_cfg_4_diamondDQM_test.py "
# shift="cmsRun python/reco_cfg_AOD_DQM.py "

# shift+="outputFileName=${workerPrefix}_loop_0.root "
# shift+="calibInput=calib_357440_90k.json "
# shift+="sqlFileName=${sqlFileName} "
# shift+="maxEventsToProcess=${maxEvents}"
echo $shift

echo "mv *.root ${resultsFolderName}/${try}"


echo "--------------------------------------------------------------------------------------------------"
Loading