Skip to content
Commits on Source (48)
......@@ -10,7 +10,7 @@
// AUTHORS: Jahred Adelman (jahred.adelman@cern.ch)
// Simon Viel (svielcern.ch)
// Koos van Nieuwkoop (jvannieu@cern.ch)
//
//
//
// ********************************************************************
#ifndef DQTGlobalWZFinderTool_H
......@@ -22,10 +22,11 @@
#include "TrigDecisionTool/TrigDecisionTool.h"
#include "TrigEgammaMatchingTool/ITrigEgammaMatchingTool.h"
#include "TrigAnalysisInterfaces/IBunchCrossingTool.h"
#include "MCTruthClassifier/IMCTruthClassifier.h"
#include "TMath.h"
#include "TH3.h"
#include <string>
#include <iostream>
......@@ -35,6 +36,7 @@
class TProfile;
class TH1F_LW;
class TH2F_LW;
class TH3F_LW;
namespace xAOD{
class EventInfo_v1; typedef EventInfo_v1 EventInfo;
......@@ -78,15 +80,17 @@ private:
void doMuonLooseTP(std::vector<const xAOD::Muon*>& goodmuonsZ, const xAOD::Vertex* pVtx);
void doMuonInDetTP(std::vector<const xAOD::Muon*>& goodmuonsZ, const xAOD::Vertex* pVtx);
//----- Electron START -----//
void doEleTriggerTP(const xAOD::Electron* el1, const xAOD::Electron* el2, bool os, bool ss);
void doEleTP(const xAOD::Electron*, const xAOD::Electron*, const xAOD::Vertex*, const xAOD::EventInfo*, bool);
void doEleContainerTP(std::vector<const xAOD::Electron*>, std::vector<const xAOD::Electron*>);
bool goodElectrons(const xAOD::EventInfo*, const xAOD::Electron*, const xAOD::Vertex*, bool);
bool antiGoodElectrons(const xAOD::EventInfo* thisEventInfo, const xAOD::Electron* electron_itr,
const xAOD::Vertex* pVtx, bool isBad);
bool antiGoodElectrons(const xAOD::EventInfo* thisEventInfo, const xAOD::Electron* electron_itr, const xAOD::Vertex* pVtx, bool isBad);
bool kinematicCuts(const xAOD::Electron*);
void fillEleEffHistos(bool tag_good, bool probe_good, bool probe_anti_good, bool os, double mass);
void fillBCIDHistos(TH2F_LW* h_48b, TH2F_LW* h_2t47b, TH2F_LW* h_indiv);
void fillBCIDHistos(double mass, TH3F* h_48b, TH3F* h_2t47b, TH3F* h_indiv);
void fillBCIDHistos(int matched, TH3F* h_48b, TH3F* h_2t47b, TH3F* h_indiv);
bool checkTruthElectron(const xAOD::Electron* electron);
......@@ -96,13 +100,110 @@ private:
bool m_isSimulation;
bool m_writeTTrees;
// --- Initialise order ---
TH1F_LW *m_muon_Pt;
TH1F_LW *m_muon_Eta;
TH1F_LW *m_ele_Et;
TH1F_LW *m_ele_Eta;
std::string m_electronContainerName;
std::string m_egDetailContainerName;
std::string m_VxPrimContainerName;
std::string m_VxContainerName;
std::string m_METName;
std::string m_muonContainerName;
std::string m_jetCollectionName;
std::string m_tracksName;
float m_electronEtCut;
float m_muonPtCut;
float m_metCut;
float m_zCutLow;
float m_zCutHigh;
float m_muonMaxEta;
ToolHandle<CP::IMuonSelectionTool> m_muonSelectionTool;
ToolHandle<CP::IIsolationSelectionTool> m_isolationSelectionTool;
ToolHandle<Trig::ITrigMuonMatching> m_muTrigMatchTool;
bool m_useOwnMuonSelection;
std::vector<std::string> m_Jpsi_mm_trigger;
std::vector<std::string> m_Z_mm_trigger;
std::vector<std::string> m_Z_ee_trigger;
ToolHandle<Trig::ITrigEgammaMatchingTool> m_elTrigMatchTool;
ToolHandle<IMCTruthClassifier> m_truthClassifier;
ToolHandle<Trig::IBunchCrossingTool> m_bcTool;
// ------
bool m_doTrigger;
TH1F *m_ZBosonCounter_El_os;
TH1F *m_ZBosonCounter_El_ss;
TH1F_LW *m_eltrigtp_matches_os;
TH1F_LW *m_eltrigtp_matches_ss;
// BCID info
double m_pileup_per_lb;
float m_distance_from_front;
bool m_is_in_train;
int m_train_length;
TH2F_LW *m_BCID_pileup_zee;
TH2F_LW *m_BCID_pileup_zmm;
TH2F_LW *m_BCID_2t47_pileup_zee;
TH2F_LW *m_BCID_2t47_pileup_zmm;
TH2F_LW *m_BCID_indiv_pileup_zee;
TH2F_LW *m_BCID_indiv_pileup_zmm;
// muon channel
TH3F *m_mutrigtp_matches_BCID_pileup;
TH3F *m_mutrigtp_matches_BCID_2t47_pileup;
TH3F *m_mutrigtp_matches_BCID_indiv_pileup;
TH3F *m_muloosetp_match_os_BCID_pileup;
TH3F *m_muloosetp_match_os_BCID_2t47_pileup;
TH3F *m_muloosetp_match_os_BCID_indiv_pileup;
TH3F *m_muloosetp_match_ss_BCID_pileup;
TH3F *m_muloosetp_match_ss_BCID_2t47_pileup;
TH3F *m_muloosetp_match_ss_BCID_indiv_pileup;
TH3F *m_muloosetp_nomatch_os_BCID_pileup;
TH3F *m_muloosetp_nomatch_os_BCID_2t47_pileup;
TH3F *m_muloosetp_nomatch_os_BCID_indiv_pileup;
TH3F *m_muloosetp_nomatch_ss_BCID_pileup;
TH3F *m_muloosetp_nomatch_ss_BCID_2t47_pileup;
TH3F *m_muloosetp_nomatch_ss_BCID_indiv_pileup;
// electron channel
TH3F *m_ele_tight_bad_os_BCID_pileup;
TH3F *m_ele_tight_bad_os_BCID_2t47_pileup;
TH3F *m_ele_tight_bad_os_BCID_indiv_pileup;
TH3F *m_ele_tight_bad_ss_BCID_pileup;
TH3F *m_ele_tight_bad_ss_BCID_2t47_pileup;
TH3F *m_ele_tight_bad_ss_BCID_indiv_pileup;
TH3F *m_ele_tight_good_os_BCID_pileup;
TH3F *m_ele_tight_good_os_BCID_2t47_pileup;
TH3F *m_ele_tight_good_os_BCID_indiv_pileup;
TH3F *m_ele_tight_good_ss_BCID_pileup;
TH3F *m_ele_tight_good_ss_BCID_2t47_pileup;
TH3F *m_ele_tight_good_ss_BCID_indiv_pileup;
TH3F *m_ele_template_os_BCID_pileup;
TH3F *m_ele_template_os_BCID_2t47_pileup;
TH3F *m_ele_template_os_BCID_indiv_pileup;
TH3F *m_ele_template_ss_BCID_pileup;
TH3F *m_ele_template_ss_BCID_2t47_pileup;
TH3F *m_ele_template_ss_BCID_indiv_pileup;
TH3F *m_eltrigtp_matches_os_BCID_pileup;
TH3F *m_eltrigtp_matches_os_BCID_2t47_pileup;
TH3F *m_eltrigtp_matches_os_BCID_indiv_pileup;
TH3F *m_eltrigtp_matches_ss_BCID_pileup;
TH3F *m_eltrigtp_matches_ss_BCID_2t47_pileup;
TH3F *m_eltrigtp_matches_ss_BCID_indiv_pileup;
// Electron channel TP histos
TH1F_LW *m_ele_tight_bad_os;
TH1F_LW *m_ele_tight_bad_ss;
TH1F_LW *m_ele_tight_good_os;
......@@ -118,8 +219,6 @@ private:
TH1F_LW *m_fiducialSumWeights_el;
TH1F_LW *m_fiducialSumWeights_mu;
//----- Electron END ------//
TH1F_LW *m_W_mt_ele;
TH1F_LW *m_W_mt_mu;
TH2F_LW *m_W_pt_v_met_ele;
......@@ -143,10 +242,6 @@ private:
TProfile *m_Z_ee_trig_ps;
TProfile *m_Z_mm_trig_ps;
TH1F_LW *m_muon_Pt;
TH1F_LW *m_muon_Eta;
TH1F_LW *m_ele_Et;
TH1F_LW *m_ele_Eta;
//Resonance Counters
float m_minLumiBlock;
......@@ -187,33 +282,11 @@ private:
int m_ZBosonCounterSBG_El[2];
int m_ZBosonCounterSBG_Mu[2];
int m_this_lb; //remove _t
int m_eventNumber; //remove _t
int m_this_lb;
int m_eventNumber;
float m_evtWeight;
std::string m_electronContainerName;
std::string m_egDetailContainerName;
std::string m_VxPrimContainerName;
std::string m_VxContainerName;
std::string m_METName;
std::string m_muonContainerName;
std::string m_jetCollectionName;
std::string m_tracksName;
float m_electronEtCut;
float m_muonPtCut;
float m_metCut;
float m_zCutLow;
float m_zCutHigh;
float m_muonMaxEta;
bool m_doTrigger;
ToolHandle<CP::IMuonSelectionTool> m_muonSelectionTool;
ToolHandle<CP::IIsolationSelectionTool> m_isolationSelectionTool;
ToolHandle<Trig::ITrigMuonMatching> m_muTrigMatchTool;
bool m_useOwnMuonSelection;
// to guard against endless messages
bool m_printedErrorEleContainer;
......@@ -221,13 +294,8 @@ private:
bool m_printedErrorMet;
bool m_printedErrorTrackContainer;
std::vector<std::string> m_Jpsi_mm_trigger;
std::vector<std::string> m_Z_mm_trigger;
std::vector<std::string> m_Z_ee_trigger;
ToolHandle<Trig::ITrigEgammaMatchingTool> m_elTrigMatchTool;
// Here we define all the TTree variables
// Muon TTrees
TTree *m_muontree;
bool m_muontree_isTruth;
......@@ -330,8 +398,6 @@ private:
int m_electron_trig_tptree_runnumber;
unsigned long long m_electron_trig_tptree_eventnumber;
ToolHandle<IMCTruthClassifier> m_truthClassifier;
};
#endif
......@@ -274,14 +274,15 @@ if isBeam==True and (DQMonFlags.monManEnvironment != 'tier0Raw') and rec.doInDet
from TrigBunchCrossingTool.BunchCrossingTool import BunchCrossingTool
from DataQualityTools.DataQualityToolsConf import DQTGlobalWZFinderTool
MyDQTGlobalWZFinderTool = DQTGlobalWZFinderTool(
name = 'DQTGlobalWZFinderTool',
doTrigger = rec.doTrigger(),
JetCollectionName = JetCollectionKey,
MuonPtCut = 27,
MuonMaxEta = ToolSvc.DQTMuonSelectionTool.MaxEta,
MuonSelectionTool = ToolSvc.DQTMuonSelectionTool,
IsolationSelectionTool = ToolSvc.DQTIsoGradientTool,
MuonTrigMatchingTool = ToolSvc.MatchingTool,
name = 'DQTGlobalWZFinderTool',
doTrigger = rec.doTrigger(),
JetCollectionName = JetCollectionKey,
MuonPtCut = 27,
MuonMaxEta = ToolSvc.DQTMuonSelectionTool.MaxEta,
MuonSelectionTool = ToolSvc.DQTMuonSelectionTool,
IsolationSelectionTool = ToolSvc.DQTIsoGradientTool,
MuonTrigMatchingTool = ToolSvc.MatchingTool,
BCTool = BunchCrossingTool(),
)
ToolSvc += MyDQTGlobalWZFinderTool;
ManagedAthenaGlobalPhysMon.AthenaMonTools += [ MyDQTGlobalWZFinderTool ];
......
......@@ -122,6 +122,7 @@
<class name="std::vector<std::vector<ElementLink<xAOD::NeutralParticleContainer_v1> > >" />
<!-- SCTRawHitValidation_v1 dictionaries: -->
<class name="xAOD::SCTRawHitValidation_v1"/>
<class name="xAOD::SCTRawHitValidationAuxContainer_v1"
id="788781DA-FE8A-414A-A72B-6E846094FCF8" />
<class name="xAOD::SCTRawHitValidationContainer_v1"
......
......@@ -159,5 +159,19 @@ class DRAWZSelection(JobProperty):
StoredValue = False
jobproperties.InDetDxAODJobPropertyContainer.add_JobProperty(DRAWZSelection)
class SkimmingExpression(JobProperty):
"""Event selection based on string input"""
statusOn = True
allowedTypes = ["string"]
StoredValue = ""
pass
jobproperties.InDetDxAODJobPropertyContainer.add_JobProperty(SkimmingExpression)
class PixelClusterThinningExpression(JobProperty):
"""Pixel cluster thinning"""
statusOn = True
allowedTypes = ["string"]
StoredValue = ""
jobproperties.InDetDxAODJobPropertyContainer.add_JobProperty(PixelClusterThinningExpression)
InDetDxAODFlags = jobproperties.InDetDxAODJobPropertyContainer
......@@ -48,6 +48,12 @@ printIdTrkDxAODConf = InDetDxAODFlags.PrintIdTrkDxAODConf() # True
# Create split-tracks if running on cosmics
makeSplitTracks = InDetDxAODFlags.MakeSplitCosmicTracks() and athCommonFlags.Beam.beamType() == 'cosmics'
# general skimming based on this string input
skimmingExpression = InDetDxAODFlags.SkimmingExpression() # *empty string*
# thinning of pixel clusters
pixelClusterThinningExpression = InDetDxAODFlags.PixelClusterThinningExpression() # *empty string*
## Autoconfiguration adjustements
isIdTrkDxAODSimulation = False
if (globalflags.DataSource == 'geant4'):
......@@ -314,6 +320,13 @@ if TrtZSel or TrtJSel:
print JPSI_SkimmingTool
if skimmingExpression:
from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__xAODStringSkimmingTool
stringSkimmingTool = DerivationFramework__xAODStringSkimmingTool(name = "stringSkimmingTool",
expression = skimmingExpression)
ToolSvc += stringSkimmingTool
DRAW_ZMUMU_SkimmingTool=None
if DRAWZSel:
......@@ -555,6 +568,8 @@ if TrtJSel:
if DRAWZSel:
skimmingTools.append(DRAW_ZMUMU_SkimmingTool)
if skimmingExpression:
skimmingTools.append(stringSkimmingTool)
#minimumbiasTrig = '(L1_RD0_FILLED)'
#
......@@ -580,6 +595,18 @@ IDTRKThinningTool = DerivationFramework__TrackParticleThinning(name = "IDTRKThin
ToolSvc += IDTRKThinningTool
thinningTools.append(IDTRKThinningTool)
if pixelClusterThinningExpression:
from DerivationFrameworkInDet.DerivationFrameworkInDetConf import DerivationFramework__TrackMeasurementThinning
trackMeasurementThinningTool = DerivationFramework__TrackMeasurementThinning(
name = "TrackMeasurementThinningTool",
ThinningService = "IDTRKThinningSvc",
SelectionString = pixelClusterThinningExpression,
TrackMeasurementValidationKey = "PixelClusters",
ApplyAnd = False)
ToolSvc += trackMeasurementThinningTool
thinningTools.append(trackMeasurementThinningTool)
#====================================================================
# Create the derivation Kernel and setup output stream
#====================================================================
......
# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
from ConfigUtils import setDefaults,serviceFactory,toolFactory
......@@ -85,8 +85,8 @@ def getInDetPhysValMonitoringTool(**kwargs) :
def getInDetPhysValMonitoringToolLoose(**kwargs) :
if 'TrackSelectionTool' not in kwargs :
from InDetPhysValMonitoring.TrackSelectionTool import InDetTrackSelectionTool
kwargs=setDefaults(kwargs, TrackSelectionTool = toolFactory(InDetTrackSelectionTool.getInDetTrackSelectionToolLoose))
from InDetPhysValMonitoring.TrackSelectionTool import getInDetTrackSelectionToolLoose
kwargs=setDefaults(kwargs, TrackSelectionTool = toolFactory(getInDetTrackSelectionToolLoose))
kwargs=setDefaults(kwargs,
name = 'InDetPhysValMonitoringToolLoose',
......@@ -97,8 +97,8 @@ def getInDetPhysValMonitoringToolLoose(**kwargs) :
def getInDetPhysValMonitoringToolTightPrimary(**kwargs) :
if 'TrackSelectionTool' not in kwargs :
from InDetPhysValMonitoring.TrackSelectionTool import InDetTrackSelectionTool
kwargs=setDefaults(kwargs, TrackSelectionTool = toolFactory(InDetTrackSelectionTool.getInDetTrackSelectionToolTightPrimary))
from InDetPhysValMonitoring.TrackSelectionTool import getInDetTrackSelectionToolTightPrimary
kwargs=setDefaults(kwargs, TrackSelectionTool = toolFactory(getInDetTrackSelectionToolTightPrimary))
kwargs=setDefaults(kwargs,
name = 'InDetPhysValMonitoringToolTightPrimary',
......
......@@ -3,18 +3,12 @@
from ConfigUtils import setDefaults
from InDetTrackSelectionTool.InDetTrackSelectionToolConf import InDet__InDetTrackSelectionTool
def getInDetTrackSelectionToolLoose(**kwargs) :
'''
Default InDetTrackSelectionTool for InDetTrackParticles
'''
kwargs = setDefaults(kwargs,CutLevel = "Loose" )
return InDet__InDetTrackSelectionTool(**kwargs)
def getInDetTrackSelectionToolTightPrimary(**kwargs) :
'''
Default InDetTrackSelectionTool for InDetTrackParticles
'''
kwargs = setDefaults(kwargs, CutLevel = "TightPrimary" )
return InDet__InDetTrackSelectionTool(**kwargs)
def getInDetTrackSelectionToolLoose(name="InDetTrackSelectionToolLoose",
**kwargs) :
kwargs=setDefaults(kwargs, CutLevel = "Loose" )
return InDet__InDetTrackSelectionTool(name, **kwargs)
def getInDetTrackSelectionToolTightPrimary(name="InDetTrackSelectionToolTightPrimary",
**kwargs) :
kwargs=setDefaults(kwargs, CutLevel = "TightPrimary" )
return InDet__InDetTrackSelectionTool(name, **kwargs)
21.0.106.1
\ No newline at end of file
21.0.107.1
\ No newline at end of file
21.0.107
\ No newline at end of file
21.0.108
\ No newline at end of file
......@@ -20,7 +20,7 @@ def checkTRT_DigitizationConfiguration():
def checkDetFlagConfiguration():
from AthenaCommon.Logging import logging
from AthenaCommon.Logging import logging,AthError
logDigiConfigChecker = logging.getLogger( 'DigiConfigChecker' )
from AthenaCommon.DetFlags import DetFlags
......
......@@ -90,7 +90,8 @@ def getGenParticleFilters():
from AthenaCommon.BeamFlags import jobproperties
if jobproperties.Beam.beamType() != "cosmics":
genParticleFilterList += ['ISF_ParticlePositionFilterDynamic']
if (not simFlags.CavernBG.statusOn) or simFlags.CavernBG.get_Value() == 'Signal':
if (not simFlags.CavernBG.statusOn or simFlags.CavernBG.get_Value() == 'Signal') and\
not (simFlags.SimulateCavern.statusOn and simFlags.SimulateCavern.get_Value()):
genParticleFilterList += ['ISF_EtaPhiFilter']
genParticleFilterList += ['ISF_GenParticleInteractingFilter']
return genParticleFilterList
......
......@@ -20,8 +20,4 @@ private:
ClassDef( DoubleArray, 1 )
};
#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
#pragma link C++ class DoubleArray+;
#endif
#endif
......@@ -20,8 +20,4 @@ private:
ClassDef( IntArray, 1 )
};
#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
#pragma link C++ class IntArray+;
#endif
#endif
......@@ -42,8 +42,4 @@ class TFCS1DFunction:public TFCSFunction
};
#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
#pragma link C++ class TFCS1DFunction+;
#endif
#endif
/*
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
*/
#ifndef ISF_FASTCALOSIMEVENT_TFCS1DFunctionHistogram_h
......@@ -33,20 +33,16 @@ class TFCS1DFunctionHistogram:public TFCS1DFunction
double sample_from_histo(TH1* hist, double);
double sample_from_histovalues(double);
vector<float> get_HistoBorders() {return m_HistoBorders;};
vector<float> get_HistoContents() {return m_HistoContents;};
std::vector<float> get_HistoBorders() {return m_HistoBorders;};
std::vector<float> get_HistoContents() {return m_HistoContents;};
protected:
vector<float> m_HistoBorders;
vector<float> m_HistoContents;
std::vector<float> m_HistoBorders;
std::vector<float> m_HistoContents;
ClassDef(TFCS1DFunctionHistogram,1) //TFCS1DFunctionHistogram
};
#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
#pragma link C++ class TFCS1DFunctionHistogram+;
#endif
#endif
......@@ -43,8 +43,4 @@ class TFCS1DFunctionInt16Histogram:public TFCS1DFunction
ClassDef(TFCS1DFunctionInt16Histogram,1) //TFCS1DFunctionInt16Histogram
};
#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
#pragma link C++ class TFCS1DFunctionInt16Histogram+;
#endif
#endif
......@@ -43,8 +43,4 @@ class TFCS1DFunctionInt32Histogram:public TFCS1DFunction
ClassDef(TFCS1DFunctionInt32Histogram,1) //TFCS1DFunctionInt32Histogram
};
#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
#pragma link C++ class TFCS1DFunctionInt32Histogram+;
#endif
#endif
/*
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
*/
#ifndef ISF_FASTCALOSIMEVENT_TFCS1DFunctionRegression_h
......@@ -10,7 +10,6 @@
#include "TH1.h"
#include <vector>
using namespace std;
class TFCS1DFunctionRegression:public TFCS1DFunction
{
......@@ -22,21 +21,17 @@ class TFCS1DFunctionRegression:public TFCS1DFunction
using TFCS1DFunction::rnd_to_fct;
virtual double rnd_to_fct(double rnd) const;
double regression_value(double uniform) const;
void set_weights(vector<vector<double> > fWeightMatrix0to1, vector<vector<double> > fWeightMatrix1to2);
void set_weights(std::vector<std::vector<double> > fWeightMatrix0to1, std::vector<std::vector<double> > fWeightMatrix1to2);
double sigmoid(double) const;
private:
vector<vector<double> > m_fWeightMatrix0to1;
vector<vector<double> > m_fWeightMatrix1to2;
std::vector<std::vector<double> > m_fWeightMatrix0to1;
std::vector<std::vector<double> > m_fWeightMatrix1to2;
ClassDef(TFCS1DFunctionRegression,1) //TFCS1DFunctionRegression
};
#if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
#pragma link C++ class TFCS1DFunctionRegression+;
#endif
#endif