Skip to content
Snippets Groups Projects
Commit dea096f3 authored by Mark Sutton's avatar Mark Sutton Committed by Graeme Stewart
Browse files

move to use only RoiDescriptors (TrigT2CaloTau-00-06-21)

parent 9a596a37
No related branches found
No related tags found
No related merge requests found
Showing
with 2509 additions and 0 deletions
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
// ********************************************************************
//
// NAME: T2CalibrationTau.h
// PACKAGE: Trigger/TrigAlgorithms/TrigT2CaloTau
//
// AUTHOR: D.O. Damazio
//
// Object only designed to understand cluster calibration
// Should be used by EM and Tau people in the near future
// It should be possible to introduce the calibration configuration
// from a jobOption file. Not possible now.
//
// ********************************************************************
#ifndef TRIGT2CALOTAU_T2CALIBRATIONTAU
#define TRIGT2CALOTAU_T2CALIBRATIONTAU
#include <vector>
#include <math.h>
#include "TrigT2CaloCommon/T2Calibration.h"
class T2CalibrationTau : public T2Calibration {
public:
/** Constructor */
T2CalibrationTau() : T2Calibration(){}
/** Destructor */
~T2CalibrationTau(){}
// The two methods of this class, initialize and Calib, are virtual
// in the base class T2Calibration and implemented there as for the
// moment calibration is the same for egamma/tau. For an specific
// calibration override these methods.
// In the initialize, one should provide a vector with the
// Eta limits (eg.: 0-2.5), the dimensions of the correction
// vector (eg: 2 100 - for 2 lines of one hundred constants - the
// first line is the eta of that bin and the second brings
// the calibration constant for that bin
// void initialize(const std::vector<float>& limit, const std::vector<int>&
// dimension, const std::vector<float>& correction);
// This, for a given cluster eta and energy (not being used yet),
// provides the calibration constant
// double Calib( const double ClusterEta, const double EnergyCluster);
};
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
// ********************************************************************
//
// NAME: T2Calo.h
// PACKAGE: Trigger/TrigAlgorithms/TrigT2CaloTau
//
// AUTHORS: M.P. Casado
// C. Osuna
// updates: 3/3/11 ccuenca, added new vars for monitoring
//
// - Add new variables to allow job option control of eta/phi regions
// used in each tool. Also hardcode in eta ranges and granularities
// for all layers and add a new function so that tools can adjust the
// number of strips used in energy sums for changes in granularity.
// The goal is to try to sample a constant eta/phi area. - R. Soluk
// ********************************************************************
#ifndef TRIGT2CALOTAU_T2CALOTAU_H
#define TRIGT2CALOTAU_T2CALOTAU_H
#include <string>
#include "GaudiKernel/ToolHandle.h"
#include "TrigInterfaces/FexAlgo.h"
#include "TrigT2CaloCommon/T2CaloBase.h"
#include "TrigT2CaloCalibration/IT2HadCalibTool.h"
#include "TrigT2CaloTau/T2CaloTauErrorMon.h"
#include "TrigCaloEvent/TrigTauCluster.h"
class StoreGateSvc;
namespace HLT
{
class TriggerElement;
}
class IAlgToolCalo;
class T2CaloTau : public T2CaloBase
{
public:
/** Constructor */
T2CaloTau(const std::string & name, ISvcLocator* pSvcLocator);
/** Destructor */
~T2CaloTau();
/** HLT method to execute */
HLT::ErrorCode hltExecute(const HLT::TriggerElement* inputTE, HLT::TriggerElement* outputTE);
/** HLT method to initialize */
HLT::ErrorCode hltInitialize();
/** HLT method to finalize */
HLT::ErrorCode hltFinalize();
private:
// Properties:
/** SG key for TrigTauCluster*/
std::string m_trigTauClusterKey;
/** not used */
int m_index;
/** EMRadius variable for monitoring */
double m_EMRadius;
/** EMRadius3S variable for monitoring */
double m_EMRadius3S;
/** CaloRadius variable for monitoring */
double m_CaloRadius;
/** HadRad variable for monitoring */
double m_HadRad;
/** Isofrac variable for monitoring */
double m_IsoFrac ;
/** stripWidth variable for monitoring*/
double m_StripWidth ;
/** Fraction of EM energy over total energy in a normal (dR<0.3) cone for monitoring */
double m_EMFraction;
/** Raw Et in wide 0.3 cone for monitoring */
double m_EtRawWide;
/** EM Energy in (dR<0.2) cone for monitoring */
double m_EMEnMedium;
/** HAD Energy in (dR<0.2) cone for monitoring */
double m_HADEnMedium;
/** EM Energy in (dR<0.1) cone for monitoring */
double m_EMEnNarrow;
/** HAD Energy in (dR<0.1) cone for monitoring */
double m_HADEnNarrow;
/** Raw Et in medium cone for monitoring */
double m_EtRawMedium;
/** Raw Et in medium cone for monitoring (EM Sampling 0) */
double m_EtRawMediumEM0;
/** Raw Et in medium cone for monitoring (EM Sampling 1) */
double m_EtRawMediumEM1;
/** Raw Et in medium cone for monitoring (EM Sampling 2) */
double m_EtRawMediumEM2;
/** Raw Et in medium cone for monitoring (EM Sampling 3) */
double m_EtRawMediumEM3;
/** Raw Et in medium cone for monitoring (Had Sampling 0) */
double m_EtRawMediumHad0;
/** Raw Et in medium cone for monitoring (Had Sampling 1) */
double m_EtRawMediumHad1;
/** Raw Et in medium cone for monitoring (Had Sampling 2) */
double m_EtRawMediumHad2;
/** EtRawNarrow/EtRawMedium */
double m_CoreFraction;
/** eta of seed of L1 ROI */
double m_EtaL1 ;
/** phi of seed of L1 ROI */
double m_PhiL1 ;
/** eta of seed of calo Cluster */
double m_Eta ;
/** phi of seed of calo Cluster */
double m_Phi ;
/** Difference in Eta at L2 and L1 for monitoring */
double m_dEtaL2Tau_RoI ;
/** Difference in Phi at L2 and L1 for monitoring */
double m_dPhiL2Tau_RoI ;
/** counter for conversion error */
unsigned int m_conversionError;
/** counter for algorithm error */
unsigned int m_algorithmError;
/** error monitoring of cluster quality */
std::vector<unsigned char> m_quality;
/** Should or not storeCells into a cell container attached to output RoI */
bool m_storeCells;
/** container pointer */
CaloCellContainer* m_Container;
/** option to update RoiDescriptor after execution (important for following trigger chain steps) */
bool m_updateRoiDescriptor;
/** phi, eta EM width */
double m_phiWidthEM;
double m_etaWidthEM;
};
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef TRIGT2CALOTAU_T2CALOTAUERRORHANDLER_H
#define TRIGT2CALOTAU_T2CALOTAUERRORHANDLER_H
namespace TAUCLUSTERROR {
/** enumerate tau-specific errors */
enum TAUCLUSTERROR{
FAILPRESEED=31,
FAILSEED=30,
HADS1E0=11,
HADS2E0=10,
HADS3E0=9,
EMS0E0=15,
EMS1E0=14,
EMS2E0=13,
EMS3E0=12
};
}
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef TRIGT2CALOTAU_T2CALOTAUERRORMON_H
#define TRIGT2CALOTAU_T2CALOTAUERRORMON_H
#include "TrigT2CaloTau/T2CaloTauErrorHandler.h"
namespace TAUCLUSTMON {
/** enumerate tau-specific errors for monitoring */
enum TAUCLUSTMON{
LARPROB=0,
TILEPROB=1,
ROBPROB=2,
RODPROB=3,
FAILSEED=4,
FAILPRESEED=5,
EMS0E0=6,
EMS1E0=7,
EMS2E0=8,
EMS3E0=9,
HADS1E0=10,
HADS2E0=11,
HADS3E0=12,
OTHERERRORS=13,
GOODCLUST=14,
ALLCLUST=15
};
bool GetClusterError(unsigned int bit,uint32_t error ) { return ((error >> bit)&0x1)!=0 ;}
void FillErrorMonitoring(uint32_t error, std::vector<unsigned char> * quality){
bool isError=false;
if ( 0x000000FF & error ) {isError=true; quality->push_back(LARPROB); }
if ( 0x0FFF0000 & error ) {isError=true; quality->push_back(TILEPROB); }
if ( 0x10000000 & error ) {isError=true; quality->push_back(ROBPROB); }
if ( 0x20000000 & error ) {isError=true; quality->push_back(RODPROB); }
if ( GetClusterError( TAUCLUSTERROR::FAILSEED , error) ) {isError=true; quality->push_back(FAILSEED); }
if ( GetClusterError( TAUCLUSTERROR::FAILPRESEED , error) ) {isError=true; quality->push_back(FAILPRESEED); }
if ( GetClusterError( TAUCLUSTERROR::EMS0E0 , error) ) {isError=true; quality->push_back(EMS0E0); }
if ( GetClusterError( TAUCLUSTERROR::EMS1E0 , error) ) {isError=true; quality->push_back(EMS1E0); }
if ( GetClusterError( TAUCLUSTERROR::EMS2E0 , error) ) {isError=true; quality->push_back(EMS2E0); }
if ( GetClusterError( TAUCLUSTERROR::EMS3E0 , error) ) {isError=true; quality->push_back(EMS3E0); }
if ( GetClusterError( TAUCLUSTERROR::HADS1E0 , error) ) {isError=true; quality->push_back(HADS1E0); }
if ( GetClusterError( TAUCLUSTERROR::HADS2E0 , error) ) {isError=true; quality->push_back(HADS2E0); }
if ( GetClusterError( TAUCLUSTERROR::HADS3E0 , error) ) {isError=true; quality->push_back(HADS3E0); }
if (isError==false && error>0 ) {quality->push_back(OTHERERRORS); }
}
}
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
// ********************************************************************
//
// NAME: TauAllCaloDRFex.h
// PACKAGE: Trigger/TrigAlgorithms/TrigT2CaloTau
//
// AUTHOR: Olga Igonkina (Nikhef), Pilar Casado (IFAE), Mogens Dam (NBI)
//
// CREATED: June-09
//
// DESCRIPTION: Tool to compute calorimeter tau variables in EM and HAD
// ********************************************************************
#ifndef TRIGT2CALOTAU_TAUALLCALODRFEX_H
#define TRIGT2CALOTAU_TAUALLCALODRFEX_H
#include "TrigT2CaloCommon/IAlgToolCalo.h"
#include "GaudiKernel/AlgTool.h"
#include "TrigCaloEvent/TrigTauCluster.h"
#include "TrigT2CaloTau/T2CaloTauErrorHandler.h"
#include "CaloInterface/ICalorimeterNoiseTool.h"
class TauAllCaloDRFex : public IAlgToolCalo
{
public:
/** Constructor */
TauAllCaloDRFex(const std::string& type, const std::string& name, const IInterface* parent);
/** virtual Destructor */
virtual ~TauAllCaloDRFex();
/** execute method of IAlgToolCalo */
using IAlgToolCalo::execute;
/** execute method */
/// take two roi descriptors into the shower
HLT::ErrorCode execute(TrigTauCluster &rtrigTauCluster, const IRoiDescriptor& roi );
// HLT::ErrorCode execute(TrigTauCluster &rtrigTauCluster, double phiWidth,
// double etaWidth, double phiWidthEM,
// double etaWidthEM, double RoIeta, double RoIphi);
// HLT::ErrorCode execute(TrigTauCluster &rtrigTauCluster,double phiWidth,
// double etaWidth, double RoIeta, double RoIphi);
/** initialize function **/
StatusCode initialize();
private:
/** Energy threshold for numStrips counting */
double m_stripEthr;
/** dR cut for reconstruction of the seed */
double m_dRSeed;
/** dR cut for full region, Wide (previously called Normal) */
double m_dRConeWide;
/** dR cut for Medium region (previously called Med) */
double m_dRConeMedium;
/** dR cut for Narrow region (previously called Nar) */
double m_dRConeNarrow;
/** dR cut for EM region (previously called Normal) */
double m_dRConeEM;
/** Variable to control noise substraction */
bool m_applyNoiseCut;
/** Switch to choose between square or linear radius */
bool m_squareRadius;
/** Number of sigmas for noise cut */
double m_noiseNSigmaCut;
/** int for hecQualityCut */
int m_hecQualityCut;
/** choose default width: 0 Narrow, 1 Medium, 2 Wide (Normal) */
int m_defaultWidth;
/** Tool for noise substraction */
ToolHandle<ICalorimeterNoiseTool> m_noiseTool;
double emRadiusAllSampl(const TrigTauClusterDetails* clusterDetails, int maxEmSamp=100);
double caloRadius(const TrigTauClusterDetails* clusterDetails);
double coreFraction(const TrigTauClusterDetails* clusterDetails);
double emFraction(const TrigTauCluster* ptrigTauCluster);
double hadRadius(const TrigTauClusterDetails* clusterDetails);
double calcEnergyPhi(double energyNegPhi, double energyPosPhi, double EnergyWidNegPhi, double EnergyWidPosPhi, double energyNegPhiConv);
bool getdR(double compPhi, double compEta, double etaCell, double phiCell, double dRCut, double& dR);
double getEMEnergy(const TrigTauClusterDetails* clusterDetails, int widthChoice);
double getHADEnergy(const TrigTauClusterDetails* clusterDetails, int widthChoice);
};
#endif
package TrigT2CaloTau
author Pilar Casado <casado@ifae.es>
author Denis Oliveira <Denis.Oliveira.Damazio@cern.ch>
author Carlos Osuna <Carlos.Osuna.Escamilla@cern.ch>
author Xin Wu <Xin.Wu@cern.ch>
use AtlasPolicy AtlasPolicy-*
use GaudiInterface GaudiInterface-* External
#use AtlasAIDA AtlasAIDA-00-* External
#use StoreGate StoreGate-* Control
use AtlasROOT AtlasROOT-* External
#use ByteStreamData ByteStreamData-* Event
#use LArByteStream LArByteStream-* LArCalorimeter/LArCnv
#use LArRecEvent LArRecEvent-* LArCalorimeter
#use LArRawUtils LArRawUtils-* LArCalorimeter
#use LArRecEvent LArRecEvent-* LArCalorimeter
#use TileEvent TileEvent-* TileCalorimeter
#use Identifier Identifier-* DetectorDescription
use CaloInterface CaloInterface-* Calorimeter
use TrigT2CaloCommon TrigT2CaloCommon-* Trigger/TrigAlgorithms
use TrigInterfaces TrigInterfaces-* Trigger/TrigSteer
#use RegionSelector RegionSelector-* DetectorDescription
use TrigSteeringEvent TrigSteeringEvent-* Trigger/TrigEvent
use TrigCaloEvent TrigCaloEvent-* Trigger/TrigEvent
#use TrigTimeAlgs TrigTimeAlgs-* Trigger/TrigTools
#use TrigMonitorBase TrigMonitorBase-* Trigger/TrigMonitoring
#use ByteStreamCnvSvcBase ByteStreamCnvSvcBase-* Event
use TrigT2CaloCalibration TrigT2CaloCalibration-* Trigger/TrigTools
private
use AthenaKernel AthenaKernel-* Control
use CaloEvent CaloEvent-* Calorimeter
use CaloGeoHelpers CaloGeoHelpers-* Calorimeter
use CaloIdentifier CaloIdentifier-* Calorimeter
use TrigT1Interfaces TrigT1Interfaces-* Trigger/TrigT1
apply_pattern dual_use_library files=*.cxx
apply_pattern declare_joboptions files="*.txt *.py"
apply_pattern declare_python_modules files="*.py"
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
/**
@mainpage
@author Carlos Osuna
@author Stefania Xella
@author M. Pilar Casado
@author Olga Igonkina
@section TrigT2CaloTauOverview Overview
This package is in charge of the calorimeter reconstruction in
the trigger LVL2 for taus. It builds a set of shower shape variables
to discriminate jet and taus.
Deposited energy is available in 3 different window sizes for all sampling.
@ref used_TrigT2CaloTau
@ref requirements_TrigT2CaloTau
*/
/**
@page used_TrigT2CaloTau Used Packages
@htmlinclude used_packages.html
*/
/**
@page requirements_TrigT2CaloTau Requirements
@include requirements
*/
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
#------------------------------------------------
# T2CaloTau Calibration Options
#------------------------------------------------
from TrigT2CaloTau.TrigT2CaloTauConf import T2CaloTau, TauAllCaloDRFex
from CaloTools.CaloNoiseToolDefault import CaloNoiseToolDefault
theCaloNoiseTool=CaloNoiseToolDefault()
from AthenaCommon.AppMgr import ToolSvc
ToolSvc+=theCaloNoiseTool
from AthenaCommon.Constants import VERBOSE,DEBUG,INFO
#Make changes to TauAllCaloDRFex parameters here:
class TauAllCaloDRFexConfig (TauAllCaloDRFex):
__slots__ = []
def __init__ (self, name="TauAllCaloDRFexConfig",tdRNar=0.1,tdRMed=0.2,tdRWid=0.4,tdefWidth=2):
super(TauAllCaloDRFexConfig, self).__init__(name)
# here put your customizations
self.CaloNoiseTool = theCaloNoiseTool
self.applyNoiseCut = True
self.noiseNSigmaCut = 2.
self.hecQualityCut = 0
self.dRSeed = 0.15
self.StripEthr = 200.
self.defaultWidth = tdefWidth #Sets which width size is saved for EMEnergy (0:Narrow,1:Medium,2:Wide)
self.dRConeNarrow = tdRNar
self.dRConeMedium = tdRMed
self.dRConeWide = tdRWid
## configurable class
class T2CaloTau_Tau_custom (T2CaloTau):
__slots__ = []
def __init__ (self, name="T2CaloTau_Tau_custom"):
super(T2CaloTau_Tau_custom, self).__init__(name)
self.EtaWidth = 0.4
self.PhiWidth = 0.4
self.EtaWidthForID = 0.3
self.PhiWidthForID = 0.3
tauAllCaloDRFex = TauAllCaloDRFexConfig()
self.IAlgToolList=[tauAllCaloDRFex]
self.TimerNtuple="T2CaloTau.T2CaTautTot"
self.TrigTauClusterKey = "T2CaloTrigTauCluster"
# monitoring part. To switch off do in topOption TriggerFlags.enableMonitoring = []
from TrigT2CaloTau.TrigT2CaloTauMonitoring import T2CaloTauValidationMonitoring, T2CaloTauOnlineMonitoring, T2CaloTauCosmicMonitoring
validation = T2CaloTauValidationMonitoring()
online = T2CaloTauOnlineMonitoring()
cosmic = T2CaloTauCosmicMonitoring()
from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig
time = TrigTimeHistToolConfig("Time")
self.AthenaMonTools = [ time, validation, online, cosmic ]
## calo monitoring class
class T2CaloTau_cells (T2CaloTau_Tau_custom):
__slots__ = []
def __init__ (self, name="T2CaloTau_cells"):
super(T2CaloTau_cells, self).__init__(name)
# here put your customizations
self.IAlgToolList= [TauAllCaloDRFexConfig('tauAllCaloDRFexCells')]
# Save cells
for item in self.IAlgToolList:
item.SaveCellsInContainer=True
item.ThresholdKeepCells=-100000.
item.hecQualityCut=0
item.CaloNoiseTool=theCaloNoiseTool
item.applyNoiseCut=False
item.noiseNSigmaCut=2.
self.StoreCells=True
self.EtaWidth = 0.4
self.PhiWidth = 0.4
self.TimerNtuple="T2CaloTau.T2CaTautTot"
self.TrigTauClusterKey = "T2CaloTrigTauCluster"
############### to be imported by the menu ###############
# default class (2011)
class T2CaloTau_Tau (T2CaloTau_Tau_custom):
__slots__ = []
#def __init__ (self, name="T2CaloTau_Tau"):
def __init__ (self, name="T2CaloTau_Tau"):
T2CaloTau_Tau_custom.__init__(self,name)
tauAllCaloDRFex = TauAllCaloDRFexConfig(tdRNar=0.1,tdRMed=0.2,tdRWid=0.4,tdefWidth=2) # use Wide (Nor in 2011), cone size 0.4
self.IAlgToolList=[tauAllCaloDRFex]
# class for 2012: uses Medium cone size as default
class T2CaloTau_Tau_Med (T2CaloTau_Tau_custom):
__slots__ = []
def __init__ (self, name="T2CaloTau_Tau_Med"):
T2CaloTau_Tau_custom.__init__(self,name)
tauAllCaloDRFex = TauAllCaloDRFexConfig(tdRNar=0.1,tdRMed=0.2,tdRWid=0.4,tdefWidth=1) # use Medium cone size (0.2) variables
self.IAlgToolList=[tauAllCaloDRFex]
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
################# Validation, DQ checks
from TrigMonitorBase.TrigGenericMonitoringToolConfig import defineHistogram, TrigGenericMonitoringToolConfig
# Set labels for error monitoring histogram. The order has to match with T2CaloTauErrorMon.h file! Number has to match with histo definition.
errorlabels = 'LAr_Problem:Tile_Problem:N_ROBs<requested:empty_ROD_block:Fail_Seed:Fail_PreSeed:EM_S0_E0:EM_S1_E0:EM_S2_E0:EM_S3_E0:HAD_S1_E0:HAD_S2_E0:HAD_S3_E0:Other_Errors:Good_Clusters:All_Clusters'
class T2CaloTauOnlineMonitoring(TrigGenericMonitoringToolConfig):
def __init__ (self, name="T2CaloTauOnlineMonitoring"):
super(T2CaloTauOnlineMonitoring, self).__init__(name)
self.defineTarget("Online")
self.Histograms += [ defineHistogram('EMRadius', type='TH1F', title="L2CaloTau FEX EMRadius;EMRadius; nevents", xbins=100, xmin=-0.5, xmax=1.5) ]
self.Histograms += [ defineHistogram('EMRadius3S', type='TH1F', title="L2CaloTau FEX EMRadius3S;EMRadius3S; nevents", xbins=100, xmin=-0.5, xmax=1.5) ]
self.Histograms += [ defineHistogram('HadRad', type='TH1F', title="L2CaloTau FEX HadRad;HadRad; nevents", xbins=100, xmin=-0.5, xmax=1.5) ]
self.Histograms += [ defineHistogram('CaloRadius', type='TH1F', title="L2CaloTau FEX CaloRadius;CaloRadius; nevents", xbins=100, xmin=-0.5, xmax=1.5) ]
self.Histograms += [ defineHistogram('IsoFrac', type='TH1F', title="L2CaloTau FEX IsoFrac;IsoFrac; nevents", xbins=80, xmin=-1.0, xmax=3.0) ]
self.Histograms += [ defineHistogram('StripWidth', type='TH1F', title="L2CaloTau FEX StripWidth;StripWidth; nevents", xbins=70, xmin=-0.1, xmax=0.6) ]
self.Histograms += [ defineHistogram('EMFraction', type='TH1F', title="L2CaloTau FEX EM Energy Fraction;EMFraction; nevents", xbins=90, xmin=-0.6, xmax=1.2) ]
##Medium: cone 0.2
self.Histograms += [ defineHistogram('EMEnMedium', type='TH1F', title="L2CaloTau FEX EMEnMedium in (dR<0.2) cone;EMEnMedium [MeV]; nevents", xbins=171, xmin=-13000, xmax=500000) ]
self.Histograms += [ defineHistogram('HADEnMedium', type='TH1F', title="L2CaloTau FEX HADEnMedium in (dR<0.2) cone;HADEnMedium [MeV]; nevents", xbins=171, xmin=-13000, xmax=500000) ]
##Narrow: cone 0.1
self.Histograms += [ defineHistogram('EMEnNarrow', type='TH1F', title="L2CaloTau FEX EMEnNarrow in (dR<0.1) cone;EMEnNarrow [MeV]; nevents", xbins=171, xmin=-13000, xmax=500000) ]
self.Histograms += [ defineHistogram('HADEnNarrow', type='TH1F', title="L2CaloTau FEX HADEnNarrow in (dR<0.1) cone;HADEnNarrow [MeV]; nevents", xbins=171, xmin=-13000, xmax=500000) ]
self.Histograms += [ defineHistogram('EtRawMedium', type='TH1F', title="L2CaloTau FEX EtRaw in a medium (dR<0.2) cone;EtRawMedium [MeV]; nevents", xbins=171, xmin=-13000, xmax=500000) ]
self.Histograms += [ defineHistogram('EtRawMediumEM0', type='TH1F', title="L2CaloTau FEX EtRaw in a medium (dR<0.2) cone - Layer 0 of EM;EtRawMediumEM0 [MeV]; nevents", xbins=171, xmin=-13000, xmax=500000) ]
self.Histograms += [ defineHistogram('EtRawMediumEM1', type='TH1F', title="L2CaloTau FEX EtRaw in a medium (dR<0.2) cone - Layer 1 of EM;EtRawMediumEM1 [MeV]; nevents", xbins=171, xmin=-13000, xmax=500000) ]
self.Histograms += [ defineHistogram('EtRawMediumEM2', type='TH1F', title="L2CaloTau FEX EtRaw in a medium (dR<0.2) cone - Layer 2 of EM;EtRawMediumEM2 [MeV]; nevents", xbins=171, xmin=-13000, xmax=500000) ]
self.Histograms += [ defineHistogram('EtRawMediumEM3', type='TH1F', title="L2CaloTau FEX EtRaw in a medium (dR<0.2) cone - Layer 3 of EM;EtRawMediumEM3 [MeV]; nevents", xbins=171, xmin=-13000, xmax=500000) ]
self.Histograms += [ defineHistogram('EtRawMediumHad0', type='TH1F', title="L2CaloTau FEX EtRaw in a medium (dR<0.2) cone - Layer 0 of Had;EtRawMediumHad0 [MeV]; nevents", xbins=171, xmin=-13000, xmax=500000) ]
self.Histograms += [ defineHistogram('EtRawMediumHad1', type='TH1F', title="L2CaloTau FEX EtRaw in a medium (dR<0.2) cone - Layer 1 of Had;EtRawMediumHad1 [MeV]; nevents", xbins=171, xmin=-13000, xmax=500000) ]
self.Histograms += [ defineHistogram('EtRawMediumHad2', type='TH1F', title="L2CaloTau FEX EtRaw in a medium (dR<0.2) cone - Layer 2 of Had;EtRawMediumHad2 [MeV]; nevents", xbins=171, xmin=-13000, xmax=500000) ]
self.Histograms += [ defineHistogram('CoreFraction', type='TH1F', title="EtRawNarrow/EtRawMedium; Core Fraction; nevents", xbins=70, xmin=-0.2, xmax=1.2) ]
self.Histograms += [ defineHistogram('EtaL1, PhiL1', type='TH2F', title="L1 ROI Eta vs Phi in T2CaloTau FEX; #eta; #varphi; nevents", xbins=51, xmin=-2.55, xmax=2.55,
ybins=65, ymin=-3.1415936-0.098174/2., ymax=3.1415936+0.098174/2.)]
self.Histograms += [ defineHistogram('EtaL1', type='TH1F', title="T2CaloTau L1 Eta; Eta; nevents", xbins=80, xmin=-4, xmax=4) ]
self.Histograms += [ defineHistogram('PhiL1', type='TH1F', title="T2CaloTau L1 Phi; Phi; nevents", xbins=65, xmin=-3.1415936-0.098174/2., xmax=3.1415936+0.098174/2.)]
self.Histograms += [ defineHistogram('Eta', type='TH1F', title="T2CaloTau FEX Eta; Eta; nevents", xbins=80, xmin=-4, xmax=4) ]
self.Histograms += [ defineHistogram('Phi', type='TH1F', title="T2CaloTau FEX Phi; Phi; nevents", xbins=65, xmin=-3.1415936-0.098174/2., xmax=3.1415936+0.098174/2.)]
self.Histograms += [ defineHistogram('dEtaL2Tau_RoI, dPhiL2Tau_RoI', type='TH2F', title="dEta vs dPhi in L2CaloTau FEX; Delta-eta; Delta-phi", xbins=40 , xmin=-0.2, xmax=0.2,
ybins=40 , ymin=-0.2, ymax=0.2) ]
self.Histograms += [ defineHistogram('ConversionErrors',type='TH1F',title='L2CaloTau Conversion Errors; # Errors; # Clusters',xbins=10,xmin=0,xmax=10)]
self.Histograms += [ defineHistogram('AlgorithmErrors', type='TH1F',title='L2CaloTau Algorithm Errors; # Errors; # Clusters', xbins=10,xmin=0,xmax=10)]
self.Histograms += [ defineHistogram('Quality', type='TH1I',title='L2CaloTau FEX Error bit mask; Error; # Clusters', xbins=16,xmin=0,xmax=16,labels=errorlabels )]
########## ##############################################################
# add validation specific histograms.
# If you ever remove histograms from Online - move them into Validation
#
#########################################################################
class T2CaloTauValidationMonitoring(T2CaloTauOnlineMonitoring):
def __init__ (self, name="T2CaloTauValidationMonitoring"):
super(T2CaloTauValidationMonitoring, self).__init__(name)
self.defineTarget("Validation")
########## ##############################################################
# add cosmic specific histograms.
#
#########################################################################
class T2CaloTauCosmicMonitoring(T2CaloTauOnlineMonitoring):
def __init__ (self, name="T2CaloTauCosmicMonitoring"):
super(T2CaloTauCosmicMonitoring, self).__init__(name)
self.defineTarget("Cosmic")
self.Histograms += [ defineHistogram('EtaL2vsL1', type='TH1F', title="L2CaloTau FEX Eta_L2 - Eta_L1; dEta; nevents", xbins=40, xmin=-0.4, xmax=0.4) ]
self.Histograms += [ defineHistogram('PhiL2vsL1', type='TH1F', title="L2CaloTau FEX Phi_L2 - Phi_L1; dPhi; nevents", xbins=40, xmin=-0.4, xmax=0.4) ]
self.Histograms += [ defineHistogram('EMFraction', type='TH1F', title="L2CaloTau FEX EM Energy Fraction;EMFraction; nevents",xbins=90, xmin=-0.6, xmax=1.2) ]
self.Histograms += [ defineHistogram('EMEnMedium', type='TH1F', title="L2CaloTau FEX EMEnMedium in (dR<0.3) cone;EMEnMedium [MeV]; nevents", xbins=54, xmin=-12000, xmax=150000) ]
self.Histograms += [ defineHistogram('HADEnMedium', type='TH1F', title="L2CaloTau FEX HADEnMedium in (dR<0.3) cone;HADEnMedium [MeV]; nevents", xbins=54, xmin=-12000, xmax=150000) ]
self.Histograms += [ defineHistogram('EMEnNarrow', type='TH1F', title="L2CaloTau FEX EMEnNarrow in (dR<0.1) cone;EMEnNarrow [MeV]; nevents", xbins=54, xmin=-12000, xmax=150000) ]
self.Histograms += [ defineHistogram('HADEnNarrow', type='TH1F', title="L2CaloTau FEX HADEnNarrow in (dR<0.1) cone;HADEnNarrow [MeV]; nevents", xbins=54, xmin=-12000, xmax=150000) ]
class TrigT2CaloTauTimeMonitoring(TrigGenericMonitoringToolConfig) :
def __init__ (self, name="TrigT2CaloTauTimeMonitoring"):
super(TrigT2CaloTauTimeMonitoring,self).__init__(name)
self.defineTarget("Time")
types_list=['Total','RegSel','BSCnv','Algor','SaveEM']
tools_list=['ESamp2','ESamp1','EaEmEn','EHadEn']
for tool in tools_list:
for type in types_list:
hist_title=tool+type
thismax=1.0
if ( (type.find("RegSel")>-1) or (type.find("SaveEM")>-1) ):
thismax=0.2
if ( (type.find("Algor")>-1) ):
thismax=0.5
self.Histograms+= [defineHistogram (hist_title,
type='TH1F',title=hist_title
,xbins=40,xmin=0.0,xmax=thismax)]
self.Histograms+= [defineHistogram ('TotalTime',
type='TH1F',title=hist_title
,xbins=50,xmin=0.0,xmax=5)]
self.Histograms += [ defineHistogram('Eta, TotalTime',
type='TH2F', title="#eta vs. time", xbins=50, xmin=-2.5,
xmax=2.5, ybins=50, ymin=0, ymax=5) ]
This diff is collapsed.
This diff is collapsed.
#include "TrigT2CaloTau/T2CaloTau.h"
#include "TrigT2CaloTau/TauAllCaloDRFex.h"
#include "GaudiKernel/DeclareFactoryEntries.h"
DECLARE_ALGORITHM_FACTORY( T2CaloTau )
DECLARE_TOOL_FACTORY( TauAllCaloDRFex )
DECLARE_FACTORY_ENTRIES(TrigT2CaloTau) {
DECLARE_ALGORITHM( T2CaloTau );
DECLARE_TOOL( TauAllCaloDRFex );
}
#include "GaudiKernel/LoadFactoryEntries.h"
LOAD_FACTORY_ENTRIES(TrigT2CaloTau)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment