Skip to content

Commit

Permalink
Merge pull request #35766 from CTPPS/ass_cuts_from_db
Browse files Browse the repository at this point in the history
PPS: consume association cuts from DB
  • Loading branch information
cmsbuild authored Oct 31, 2021
2 parents 5675cfa + 40e98d8 commit 6681a5f
Show file tree
Hide file tree
Showing 8 changed files with 45 additions and 12 deletions.
8 changes: 6 additions & 2 deletions CondFormats/PPSObjects/interface/PPSAssociationCuts.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ class PPSAssociationCuts {
double getTiTrMin() const { return ti_tr_min_; }
double getTiTrMax() const { return ti_tr_max_; }

// build TF1 representations of the mean and threshold functions
// NB: declared as const as it only modifies mutable class fields
void buildFunctions() const;

// returns whether the specified cut is applied
bool isApplied(Quantities quantity) const;

Expand All @@ -48,8 +52,8 @@ class PPSAssociationCuts {
std::vector<std::string> s_thresholds_;

// TF1 representation of the cut parameters - for run time evaluations
std::vector<std::shared_ptr<TF1> > f_means_ COND_TRANSIENT;
std::vector<std::shared_ptr<TF1> > f_thresholds_ COND_TRANSIENT;
mutable std::vector<std::shared_ptr<TF1> > f_means_ COND_TRANSIENT;
mutable std::vector<std::shared_ptr<TF1> > f_thresholds_ COND_TRANSIENT;

// timing-tracking cuts
double ti_tr_min_;
Expand Down
27 changes: 24 additions & 3 deletions CondFormats/PPSObjects/src/PPSAssociationCuts.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,24 @@ PPSAssociationCuts::CutsPerArm::CutsPerArm(const edm::ParameterSet &iConfig, int

std::string threshold = association_cuts.getParameter<std::string>(names[i] + "_cut_threshold");
s_thresholds_.push_back(threshold);

f_means_.push_back(std::make_shared<TF1>("f", mean.c_str()));
f_thresholds_.push_back(std::make_shared<TF1>("f", threshold.c_str()));
}

ti_tr_min_ = association_cuts.getParameter<double>("ti_tr_min");
ti_tr_max_ = association_cuts.getParameter<double>("ti_tr_max");

buildFunctions();
}

//----------------------------------------------------------------------------------------------------

void PPSAssociationCuts::CutsPerArm::buildFunctions() const {
f_means_.clear();
for (const auto &s : s_means_)
f_means_.push_back(std::make_shared<TF1>("f", s.c_str()));

f_thresholds_.clear();
for (const auto &s : s_thresholds_)
f_thresholds_.push_back(std::make_shared<TF1>("f", s.c_str()));
}

//----------------------------------------------------------------------------------------------------
Expand All @@ -42,10 +53,20 @@ bool PPSAssociationCuts::CutsPerArm::isApplied(Quantities quantity) const {

bool PPSAssociationCuts::CutsPerArm::isSatisfied(
Quantities quantity, double x_near, double y_near, double xangle, double q_NF_diff) const {
// if cut not applied, then condition considered as satisfied
if (!isApplied(quantity))
return true;

// build functions if not already done
// (this may happen if data (string representation) are loaded from DB and the constructor is not executed)
if (f_means_.size() < s_means_.size())
buildFunctions();

// evaluate mean and threshold
const double mean = evaluateExpression(f_means_.at(quantity), x_near, y_near, xangle);
const double threshold = evaluateExpression(f_thresholds_.at(quantity), x_near, y_near, xangle);

// make comparison
return fabs(q_NF_diff - mean) < threshold;
}

Expand Down
2 changes: 0 additions & 2 deletions RecoPPS/ProtonReconstruction/python/ctppsProtons_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@

# import and adjust proton-reconstructions settings
from RecoPPS.ProtonReconstruction.ctppsProtons_cfi import *
from CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff import *

ctppsProtons.lhcInfoLabel = ctppsLHCInfoLabel
ctppsProtons.ppsAssociationCutsLabel = ppsAssociationCutsESSource.ppsAssociationCutsLabel

ctppsProtons.pixelDiscardBXShiftedTracks = True
ctppsProtons.default_time = -999.
4 changes: 3 additions & 1 deletion Validation/CTPPS/python/simu_config/year_2016_cff.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import FWCore.ParameterSet.Config as cms

from Validation.CTPPS.simu_config.base_cff import *

import CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff as ac
ac.use_single_infinite_iov_entry(ac.ppsAssociationCutsESSource,ac.p2016)
ac.use_single_infinite_iov_entry(ac.ppsAssociationCutsESSource, ac.p2016)
ppsAssociationCutsESSource = ac.ppsAssociationCutsESSource

# base profile settings for 2016
profile_base_2016 = profile_base.clone(
Expand Down
4 changes: 3 additions & 1 deletion Validation/CTPPS/python/simu_config/year_2017_cff.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import FWCore.ParameterSet.Config as cms

from Validation.CTPPS.simu_config.base_cff import *

import CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff as ac
ac.use_single_infinite_iov_entry(ac.ppsAssociationCutsESSource,ac.p2017)
ac.use_single_infinite_iov_entry(ac.ppsAssociationCutsESSource, ac.p2017)
ppsAssociationCutsESSource = ac.ppsAssociationCutsESSource

from CalibPPS.ESProducers.ctppsOpticalFunctions_non_DB_cff import optics_2017 as selected_optics

Expand Down
4 changes: 3 additions & 1 deletion Validation/CTPPS/python/simu_config/year_2018_cff.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import FWCore.ParameterSet.Config as cms

from Validation.CTPPS.simu_config.base_cff import *

import CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff as ac
ac.use_single_infinite_iov_entry(ac.ppsAssociationCutsESSource,ac.p2018)
ac.use_single_infinite_iov_entry(ac.ppsAssociationCutsESSource, ac.p2018)
ppsAssociationCutsESSource = ac.ppsAssociationCutsESSource

from CalibPPS.ESProducers.ctppsOpticalFunctions_non_DB_cff import optics_2018 as selected_optics

Expand Down
4 changes: 3 additions & 1 deletion Validation/CTPPS/python/simu_config/year_2021_cff.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import FWCore.ParameterSet.Config as cms

from Validation.CTPPS.simu_config.base_cff import *

import CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff as ac
ac.use_single_infinite_iov_entry(ac.ppsAssociationCutsESSource,ac.p2021)
ac.use_single_infinite_iov_entry(ac.ppsAssociationCutsESSource, ac.p2021)
ppsAssociationCutsESSource = ac.ppsAssociationCutsESSource

from CalibPPS.ESProducers.ctppsOpticalFunctions_non_DB_cff import optics_2021 as selected_optics

Expand Down
4 changes: 3 additions & 1 deletion Validation/CTPPS/python/simu_config/year_2022_cff.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
import FWCore.ParameterSet.Config as cms

from Validation.CTPPS.simu_config.base_cff import *

import CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff as ac
ac.use_single_infinite_iov_entry(ac.ppsAssociationCutsESSource,ac.p2022)
ac.use_single_infinite_iov_entry(ac.ppsAssociationCutsESSource, ac.p2022)
ppsAssociationCutsESSource = ac.ppsAssociationCutsESSource

from CalibPPS.ESProducers.ctppsOpticalFunctions_non_DB_cff import optics_2022 as selected_optics

Expand Down

0 comments on commit 6681a5f

Please sign in to comment.