Skip to content

Commit

Permalink
Merge pull request #22461 from franzoni/hpbeamspot_10_0_x_backPort_PR…
Browse files Browse the repository at this point in the history
…22299_GF

Complete integration of HP beamspot workflow for PCL
  • Loading branch information
cmsbuild committed Mar 6, 2018
2 parents b25c0ef + e2af8be commit f6867b9
Show file tree
Hide file tree
Showing 15 changed files with 201 additions and 28 deletions.
38 changes: 23 additions & 15 deletions Calibration/TkAlCaRecoProducers/plugins/AlcaBeamSpotHarvester.cc
Expand Up @@ -17,6 +17,7 @@
#include "FWCore/Framework/interface/ConsumesCollector.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/MessageLogger/interface/JobReport.h"

#include "DataFormats/BeamSpot/interface/BeamSpot.h"

Expand All @@ -27,7 +28,7 @@
//#include "CondCore/Utilities/interface/Utilities.h"
// #include "FWCore/MessageLogger/interface/JobReport.h"

#include <iostream>
#include <iostream>
#include <cstring>

using namespace edm;
Expand All @@ -42,7 +43,7 @@ AlcaBeamSpotHarvester::AlcaBeamSpotHarvester(const edm::ParameterSet& iConfig) :
sigmaZCut_ (iConfig.getParameter<ParameterSet>("AlcaBeamSpotHarvesterParameters").getUntrackedParameter<double>("SigmaZCut")),
dumpTxt_ (iConfig.getParameter<ParameterSet>("AlcaBeamSpotHarvesterParameters").getUntrackedParameter<bool>("DumpTxt")),
outTxtFileName_ (iConfig.getParameter<ParameterSet>("AlcaBeamSpotHarvesterParameters").getUntrackedParameter<std::string>("TxtFileName")),
theAlcaBeamSpotManager_(iConfig, consumesCollector()) {
theAlcaBeamSpotManager_(iConfig, consumesCollector()) {
}

//--------------------------------------------------------------------------------------------------
Expand All @@ -52,13 +53,13 @@ AlcaBeamSpotHarvester::~AlcaBeamSpotHarvester(){}
void AlcaBeamSpotHarvester::beginJob() {}

//--------------------------------------------------------------------------------------------------
void AlcaBeamSpotHarvester::endJob() {}
void AlcaBeamSpotHarvester::endJob() {}

//--------------------------------------------------------------------------------------------------
void AlcaBeamSpotHarvester::analyze(const edm::Event& iEvent, const edm::EventSetup&) {
// edm::LogInfo("AlcaBeamSpotHarvester")
// << "Lumi: " << iEvent.luminosityBlock()
// << " Time: " << iEvent.time().unixTime()
// << "Lumi: " << iEvent.luminosityBlock()
// << " Time: " << iEvent.time().unixTime()
// << std::endl;
}

Expand Down Expand Up @@ -96,7 +97,7 @@ void AlcaBeamSpotHarvester::endRun(const edm::Run& iRun, const edm::EventSetup&)
aBeamSpot->SetEmittanceX(it->second.emittanceX());
aBeamSpot->SetEmittanceY(it->second.emittanceY());
aBeamSpot->SetBetaStar(it->second.betaStar() );

for (int i=0; i<7; ++i) {
for (int j=0; j<7; ++j) {
aBeamSpot->SetCovariance(i,j,it->second.covariance(i,j));
Expand All @@ -112,14 +113,14 @@ void AlcaBeamSpotHarvester::endRun(const edm::Run& iRun, const edm::EventSetup&)
beamspot::BeamSpotContainer currentBS;


// run based
// run based
if (beamSpotOutputBase_ == "runbased" ) {
thisIOV = (cond::Time_t) iRun.id().run();
}
// lumi based
else if (beamSpotOutputBase_ == "lumibased" ) {
edm::LuminosityBlockID lu(iRun.id().run(),it->first);
thisIOV = (cond::Time_t)(lu.value());
thisIOV = (cond::Time_t)(lu.value());

currentBS.beamspot = it -> second ;
currentBS.run = iRun.id().run() ;
Expand All @@ -139,13 +140,21 @@ void AlcaBeamSpotHarvester::endRun(const edm::Run& iRun, const edm::EventSetup&)
edm::LogInfo("AlcaBeamSpotHarvester")
<< "new tag requested" << std::endl;
//poolDbService->createNewIOV<BeamSpotObjects>(aBeamSpot, poolDbService->beginOfTime(),poolDbService->endOfTime(),"BeamSpotObjectsRcd");

//poolDbService->createNewIOV<BeamSpotObjects>(aBeamSpot, poolDbService->currentTime(), poolDbService->endOfTime(),"BeamSpotObjectsRcd");
poolDbService->writeOne<BeamSpotObjects>(aBeamSpot, thisIOV, outputrecordName_);
if (dumpTxt_ && beamSpotOutputBase_ == "lumibased"){
beamspot::dumpBeamSpotTxt(outFile, currentBS);
}
}

edm::Service<edm::JobReport> jr;
if (jr.isAvailable()) {
std::map<std::string, std::string> jrInfo;
jrInfo["Source"] = std::string("AlcaHarvesting");
jrInfo["FileClass"] = std::string("ALCATXT");
jr->reportAnalysisFile(outTxt, jrInfo);
}

}
}
else {
edm::LogInfo("AlcaBeamSpotHarvester")
<< "no new tag requested, appending IOV" << std::endl;
Expand All @@ -158,7 +167,6 @@ void AlcaBeamSpotHarvester::endRun(const edm::Run& iRun, const edm::EventSetup&)




/*
int argc = 15;
const char* argv[] = {"endRun"
Expand All @@ -170,12 +178,12 @@ void AlcaBeamSpotHarvester::endRun(const edm::Run& iRun, const edm::EventSetup&)
,"-b","1"
,"-e","10"
};
edm::LogInfo("AlcaBeamSpotHarvester")
<< "Running utilities!"
<< "Running utilities!"
<< utilities.run(argc,(char**)argv);
edm::LogInfo("AlcaBeamSpotHarvester")
<< "Run utilities!"
<< "Run utilities!"
<< std::endl;
*/
}
Expand Down
@@ -0,0 +1,17 @@
import FWCore.ParameterSet.Config as cms




OutALCARECOPromptCalibProdBeamSpotHP_noDrop = cms.PSet(
SelectEvents = cms.untracked.PSet(
SelectEvents = cms.vstring('pathALCARECOPromptCalibProdBeamSpotHP')
),
outputCommands = cms.untracked.vstring(
'keep *_alcaBeamSpotProducerHP_*_*')
)

import copy

OutALCARECOPromptCalibProdBeamSpotHP=copy.deepcopy(OutALCARECOPromptCalibProdBeamSpotHP_noDrop)
OutALCARECOPromptCalibProdBeamSpotHP.outputCommands.insert(0, "drop *")
@@ -0,0 +1,36 @@
import FWCore.ParameterSet.Config as cms

# ------------------------------------------------------------------------------
# configure a filter to run only on the events selected by TkAlMinBias AlcaReco
import copy
from HLTrigger.HLTfilters.hltHighLevel_cfi import *
ALCARECOTkAlMinBiasFilterForBSHP = copy.deepcopy(hltHighLevel)
ALCARECOTkAlMinBiasFilterForBSHP.HLTPaths = ['pathALCARECOTkAlMinBias']
ALCARECOTkAlMinBiasFilterForBSHP.throw = True ## dont throw on unknown path names
ALCARECOTkAlMinBiasFilterForBSHP.TriggerResultsTag = cms.InputTag("TriggerResults","","RECO")
#process.TkAlMinBiasFilterForBS.eventSetupPathsKey = 'pathALCARECOTkAlMinBias:RECO'
#ALCARECODtCalibHLTFilter.andOr = True ## choose logical OR between Triggerbits


# ------------------------------------------------------------------------------
# configure the beam-spot production
from Calibration.TkAlCaRecoProducers.AlcaBeamSpotProducerHP_cff import *


# ------------------------------------------------------------------------------
# this is for filtering on L1 technical trigger bit
# Set the HLT paths
import HLTrigger.HLTfilters.hltHighLevel_cfi
ALCARECOHltFilterForBSHP = HLTrigger.HLTfilters.hltHighLevel_cfi.hltHighLevel.clone(
andOr = True, ## choose logical OR between Triggerbits
## HLTPaths = [
## #Minimum Bias
## "HLT_MinBias*"
## ],
eventSetupPathsKey = 'PromptCalibProd',
throw = False # tolerate triggers stated above, but not available
)

seqALCARECOPromptCalibProdBeamSpotHP = cms.Sequence(ALCARECOTkAlMinBiasFilterForBSHP *
ALCARECOHltFilterForBSHP *
alcaBeamSpotProducerHP)
@@ -0,0 +1,4 @@
import FWCore.ParameterSet.Config as cms

from Calibration.TkAlCaRecoProducers.AlcaBeamSpotProducerHP_cfi import alcaBeamSpotProducerHP
alcaBeamSpotHP = cms.Sequence( alcaBeamSpotProducerHP )
@@ -0,0 +1,58 @@
import FWCore.ParameterSet.Config as cms

alcaBeamSpotProducerHP = cms.EDProducer("AlcaBeamSpotProducer",
AlcaBeamSpotProducerParameters = cms.PSet(
RunAllFitters = cms.bool(False), ## False: run only default fitter
RunBeamWidthFit = cms.bool(False),
WriteToDB = cms.bool(False), ## do not write results to DB
fitEveryNLumi = cms.untracked.int32( 1 ),
resetEveryNLumi = cms.untracked.int32( 1 )
),
BeamFitter = cms.PSet(
Debug = cms.untracked.bool(False),
TrackCollection = cms.untracked.InputTag('ALCARECOTkAlMinBias'),
IsMuonCollection = cms.untracked.bool(False),
WriteAscii = cms.untracked.bool(False),
AsciiFileName = cms.untracked.string('BeamFit.txt'), ## all results
AppendRunToFileName = cms.untracked.bool(True), #runnumber will be inserted to the file name
WriteDIPAscii = cms.untracked.bool(False),
DIPFileName = cms.untracked.string('BeamFitDIP.txt'), ## only the last results, for DIP
SaveNtuple = cms.untracked.bool(False),
SaveFitResults = cms.untracked.bool(False),
SavePVVertices = cms.untracked.bool(False),
OutputFileName = cms.untracked.string('analyze_d0_phi.root'),
MinimumPt = cms.untracked.double(1.0),
MaximumEta = cms.untracked.double(2.4),
MaximumImpactParameter = cms.untracked.double(1.0),
MaximumZ = cms.untracked.double(60),
MinimumTotalLayers = cms.untracked.int32(6),
MinimumPixelLayers = cms.untracked.int32(-1),
MaximumNormChi2 = cms.untracked.double(10),
TrackAlgorithm = cms.untracked.vstring(), ## ctf,rs,cosmics,initialStep,lowPtTripletStep...; for all algos, leave it blank
TrackQuality = cms.untracked.vstring(), ## loose, tight, highPurity...; for all qualities, leave it blank
InputBeamWidth = cms.untracked.double(-1.0), ## if -1 use the value calculated by the analyzer
FractionOfFittedTrks = cms.untracked.double(0.9),
MinimumInputTracks = cms.untracked.int32(50)
),
PVFitter = cms.PSet(
Debug = cms.untracked.bool(False),
Apply3DFit = cms.untracked.bool(True),
VertexCollection = cms.untracked.InputTag('offlinePrimaryVertices'),
#WriteAscii = cms.untracked.bool(True),
#AsciiFileName = cms.untracked.string('PVFit.txt'),
maxNrStoredVertices = cms.untracked.uint32(10000),
minNrVerticesForFit = cms.untracked.uint32(10),
minVertexNdf = cms.untracked.double(10.),
maxVertexNormChi2 = cms.untracked.double(10.),
minVertexNTracks = cms.untracked.uint32(30),
minVertexMeanWeight = cms.untracked.double(0.5),
maxVertexR = cms.untracked.double(2),
maxVertexZ = cms.untracked.double(10),
errorScale = cms.untracked.double(0.9),
nSigmaCut = cms.untracked.double(50.),
FitPerBunchCrossing = cms.untracked.bool(False),
useOnlyFirstPV = cms.untracked.bool(True),
minSumPt = cms.untracked.double(50.)
)
)

1 change: 1 addition & 0 deletions Configuration/AlCa/python/autoPCL.py
@@ -1,4 +1,5 @@
autoPCL = {'PromptCalibProd' : 'BeamSpotByRun+BeamSpotByLumi',
'PromptCalibProdBeamSpotHP' : 'BeamSpotHPByRun+BeamSpotHPByLumi',
'PromptCalibProdSiStrip' : 'SiStripQuality',
'PromptCalibProdSiStripGains' : 'SiStripGains',
'PromptCalibProdSiPixelAli' : 'SiPixelAli',
Expand Down
Expand Up @@ -26,7 +26,6 @@ def __init__(self):
self.eras=Run2_2017
self.promptCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2017' ]
self.expressCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2017_express_trackingOnly' ]
self.alcaHarvCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2017_harvesting_trackingOnly' ]
self.visCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2017' ]

"""
Expand Down
2 changes: 1 addition & 1 deletion Configuration/DataProcessing/python/Impl/trackingOnly.py
Expand Up @@ -38,7 +38,7 @@ def expressProcessing(self, globalTag, **args):
args['skims'].append('TkAlMinBias')

# reco sequence is limited to tracking => DQM accordingly
if not args.has_key('dqmSeq') :
if not args.has_key('dqmSeq') or len(args['dqmSeq'])==0:
args['dqmSeq'] = ['DQMOfflineTracking']

process = pp.expressProcessing(self, globalTag, **args)
Expand Down
Expand Up @@ -26,7 +26,6 @@ def __init__(self):
self.eras=Run2_2017
self.promptCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2017' ]
self.expressCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2017_express_trackingOnly' ]
self.alcaHarvCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2017_harvesting_trackingOnly' ]
self.visCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2017' ]

"""
Expand Down
Expand Up @@ -26,7 +26,6 @@ def __init__(self):
self.eras=Run2_2018
self.promptCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2018' ]
self.expressCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2018_express_trackingOnly' ]
self.alcaHarvCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2018_harvesting_trackingOnly' ]
self.visCustoms += [ 'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2018' ]

"""
Expand Down
8 changes: 4 additions & 4 deletions Configuration/DataProcessing/test/run_CfgTest.sh
Expand Up @@ -44,12 +44,12 @@ done

runTest "${LOCAL_TEST_DIR}/RunExpressProcessing.py --scenario AlCaTestEnable --global-tag GLOBALTAG --lfn /store/whatever --alcareco PromptCalibProdEcalPedestals "
runTest "${LOCAL_TEST_DIR}/RunAlcaSkimming.py --scenario AlCaTestEnable --lfn=/store/whatever --global-tag GLOBALTAG --skims PromptCalibProdEcalPedestals"
runTest "${LOCAL_TEST_DIR}/RunAlcaHarvesting.py --scenario AlCaTestEnable --lfn /store/whatever --dataset /A/B/C --global-tag GLOBALTAG --workflows=EcalPedestals"
runTest "${LOCAL_TEST_DIR}/RunAlcaHarvesting.py --scenario AlCaTestEnable --lfn /store/whatever --dataset /A/B/C --global-tag GLOBALTAG --alcapromptdataset=PromptCalibProdEcalPedestals"

declare -a arr=("trackingOnlyEra_Run2_2017" "trackingOnlyEra_Run2_2018")
for scenario in "${arr[@]}"
do
runTest "${LOCAL_TEST_DIR}/RunExpressProcessing.py --scenario $scenario --global-tag GLOBALTAG --lfn /store/whatever --alcarecos=TkAlMinBias"
runTest "${LOCAL_TEST_DIR}/RunAlcaSkimming.py --scenario $scenario --lfn /store/whatever --global-tag GLOBALTAG --skims TkAlMinBias"
runTest "${LOCAL_TEST_DIR}/RunAlcaHarvesting.py --scenario $scenario --lfn /store/whatever --dataset /A/B/C --global-tag GLOBALTAG"
runTest "${LOCAL_TEST_DIR}/RunExpressProcessing.py --scenario $scenario --global-tag GLOBALTAG --lfn /store/whatever --alcarecos=TkAlMinBias+PromptCalibProdBeamSpotHP"
runTest "${LOCAL_TEST_DIR}/RunAlcaSkimming.py --scenario $scenario --lfn /store/whatever --global-tag GLOBALTAG --skims TkAlMinBias,PromptCalibProdBeamSpotHP"
runTest "${LOCAL_TEST_DIR}/RunAlcaHarvesting.py --scenario $scenario --lfn /store/whatever --dataset /A/B/C --global-tag GLOBALTAG --alcapromptdataset=PromptCalibProdBeamSpotHP"
done
1 change: 1 addition & 0 deletions Configuration/EventContent/python/AlCaRecoOutput_cff.py
Expand Up @@ -128,6 +128,7 @@
# stream for prompt-calibration @ Tier0
###############################################################
from Calibration.TkAlCaRecoProducers.ALCARECOPromptCalibProd_Output_cff import *
from Calibration.TkAlCaRecoProducers.ALCARECOPromptCalibProdBeamSpotHP_Output_cff import *
from Calibration.TkAlCaRecoProducers.ALCARECOPromptCalibProdSiStrip_Output_cff import *
from Calibration.TkAlCaRecoProducers.ALCARECOPromptCalibProdSiStripGains_Output_cff import *
from Calibration.TkAlCaRecoProducers.ALCARECOPromptCalibProdSiStripGainsAAG_Output_cff import *
Expand Down
6 changes: 3 additions & 3 deletions Configuration/PyReleaseValidation/python/relval_steps.py
Expand Up @@ -1424,7 +1424,7 @@ def lhegensim2017(fragment,howMuch):
'--customise':'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2017_express_trackingOnly',
}

steps['ALCASPLITHPBS']={'-s':'ALCAOUTPUT:TkAlMinBias,ALCA:PromptCalibProd',
steps['ALCASPLITHPBS']={'-s':'ALCAOUTPUT:TkAlMinBias,ALCA:PromptCalibProdBeamSpotHP',
'--scenario':'pp',
'--data':'',
'--era':'Run2_2017',
Expand All @@ -1434,14 +1434,14 @@ def lhegensim2017(fragment,howMuch):
'--triggerResultsProcess':'RECO',
}

steps['ALCAHARVDHPBS']={'-s':'ALCAHARVEST:%s'%(autoPCL['PromptCalibProd']),
steps['ALCAHARVDHPBS']={'-s':'ALCAHARVEST:%s'%(autoPCL['PromptCalibProdBeamSpotHP']),
#'--conditions':'auto:run2_data_promptlike',
'--conditions':'92X_dataRun2_Express_v2_snapshotted', # to replaced with line above once run2_data_promptlike will contain DropBoxMetadata
'--scenario':'pp',
'--data':'',
'--era':'Run2_2017',
'--customise':'Configuration/DataProcessing/RecoTLR.customisePostEra_Run2_2017_harvesting_trackingOnly',
'--filein':'file:PromptCalibProd.root'}
'--filein':'file:PromptCalibProdBeamSpotHP.root'}


steps['RECOCOSD']=merge([{'--scenario':'cosmics',
Expand Down

0 comments on commit f6867b9

Please sign in to comment.