Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updat of some HLT filters for Egamma paths entering in 73X #5772

Merged
merged 11 commits into from Nov 13, 2014
20 changes: 14 additions & 6 deletions Calibration/EcalAlCaRecoProducers/BuildFile.xml
@@ -1,19 +1,27 @@
<use name="FWCore/Framework"/>
<use name="FWCore/MessageLogger"/>
<use name="FWCore/PluginManager"/>
<use name="FWCore/ParameterSet"/>
<use name="DataFormats/Candidate"/>
<use name="DataFormats/EcalDigi"/>
<use name="DataFormats/EcalRecHit"/>
<use name="DataFormats/EgammaReco"/>
<use name="DataFormats/EgammaCandidates"/>
<use name="DataFormats/HLTReco"/>
<use name="DataFormats/RecoCandidate"/>
<use name="DataFormats/Math"/>
<use name="CalibFormats/SiStripObjects"/>
<use name="CalibCalorimetry/HcalAlgos"/>
<use name="CondFormats/EcalObjects"/>
<use name="CondFormats/DataRecord"/>
<use name="RecoLocalCalo/EcalRecAlgos"/>
<use name="CondFormats/HcalObjects"/>
<use name="CondFormats/SiPixelObjects"/>
<use name="Geometry/CaloGeometry"/>
<use name="Geometry/CaloTopology"/>
<use name="RecoEcal/EgammaClusterAlgos"/>
<use name="Geometry/EcalAlgo"/>
<use name="DataFormats/Math"/>
<use name="TrackingTools/TrackAssociator"/>
<use name="RecoEcal/EgammaClusterAlgos"/>
<use name="RecoEcal/EgammaCoreTools"/>
<use name="RecoLocalCalo/EcalRecAlgos"/>
<use name="TrackingTools/TrackAssociator"/>
<use name="clhep"/>
<use name="FWCore/PluginManager"/>
<use name="DataFormats/EgammaCandidates"/>
<flags EDM_PLUGIN="1"/>
@@ -0,0 +1,231 @@
#ifndef SelectedElectronFEDListProducer_h
#define SelectedFEDListProducer_h

#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <fstream>
#include "TLorentzVector.h"
#include "TVector3.h"
#include <ostream>
#include <memory>
#include <stdint.h>

// common
#include "DataFormats/Common/interface/Handle.h"
// egamma objects
#include "DataFormats/EgammaReco/interface/SuperCluster.h"
#include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
#include "DataFormats/EgammaReco/interface/PreshowerCluster.h"
#include "DataFormats/EgammaReco/interface/PreshowerClusterFwd.h"
#include "DataFormats/RecoCandidate/interface/RecoEcalCandidate.h"
#include "DataFormats/RecoCandidate/interface/RecoEcalCandidateFwd.h"
#include "DataFormats/EgammaCandidates/interface/Electron.h"
#include "DataFormats/EgammaCandidates/interface/ElectronFwd.h"
#include "DataFormats/EgammaCandidates/interface/GsfElectron.h"
#include "DataFormats/EgammaCandidates/interface/GsfElectronFwd.h"
#include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h"
// raw data
#include "DataFormats/FEDRawData/interface/FEDRawData.h"
#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
#include "DataFormats/FEDRawData/interface/FEDNumbering.h"
// detector id
#include "DataFormats/HcalDetId/interface/HcalDetId.h"
#include "DataFormats/HcalDetId/interface/HcalElectronicsId.h"
#include "DataFormats/SiStripDetId/interface/SiStripDetId.h"
// Math
#include "DataFormats/Math/interface/normalizedPhi.h"
// Hcal rec hit
#include "DataFormats/ParticleFlowReco/interface/PFRecHit.h"
#include "DataFormats/ParticleFlowReco/interface/PFRecHitFwd.h"
#include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h"
#include "DataFormats/CaloRecHit/interface/CaloRecHit.h"
#include "DataFormats/TrackingRecHit/interface/TrackingRecHitFwd.h"
// Geometry
#include "Geometry/CaloGeometry/interface/CaloGeometry.h"
#include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h"
#include "Geometry/CaloEventSetup/interface/CaloTopologyRecord.h"
#include "Geometry/EcalMapping/interface/EcalElectronicsMapping.h"
#include "Geometry/EcalMapping/interface/EcalMappingRcd.h"
#include "Geometry/EcalAlgo/interface/EcalPreshowerGeometry.h"
#include "Geometry/Records/interface/IdealGeometryRecord.h"
#include "Geometry/Records/interface/CaloGeometryRecord.h"
#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
#include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetUnit.h"
#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
// strip geometry
#include "CalibFormats/SiStripObjects/interface/SiStripRegionCabling.h"
#include "CalibFormats/SiStripObjects/interface/SiStripDetCabling.h"
#include "CalibTracker/Records/interface/SiStripDetCablingRcd.h"
#include "CalibTracker/Records/interface/SiStripRegionCablingRcd.h"
// FW core
#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
#include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
#include "FWCore/Utilities/interface/InputTag.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/EDProducer.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/Framework/interface/ESTransientHandle.h"
// Message logger
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
// Strip and pixel
#include "CondFormats/SiStripObjects/interface/SiStripFedCabling.h"
#include "CondFormats/SiStripObjects/interface/FedChannelConnection.h"
#include "CondFormats/SiPixelObjects/interface/SiPixelFedCablingMap.h"
#include "CondFormats/SiPixelObjects/interface/SiPixelFedCabling.h"
#include "CondFormats/SiPixelObjects/interface/CablingPathToDetUnit.h"
#include "CondFormats/SiPixelObjects/interface/SiPixelFrameConverter.h"
#include "CondFormats/SiPixelObjects/interface/GlobalPixel.h"
#include "CondFormats/SiPixelObjects/interface/LocalPixel.h"
#include "CondFormats/SiPixelObjects/interface/ElectronicIndex.h"
#include "CondFormats/SiPixelObjects/interface/DetectorIndex.h"
#include "CondFormats/DataRecord/interface/SiPixelFedCablingMapRcd.h"
#include "CondFormats/SiPixelObjects/interface/SiPixelFedCablingTree.h"

// Hcal objects
#include "CondFormats/HcalObjects/interface/HcalChannelQuality.h"
#include "CondFormats/DataRecord/interface/HcalChannelQualityRcd.h"
#include "CondFormats/HcalObjects/interface/HcalElectronicsMap.h"
#include "CalibFormats/HcalObjects/interface/HcalDbService.h"
#include "CalibFormats/HcalObjects/interface/HcalDbRecord.h"

using namespace std;

// Pixel region class
class PixelRegion {
public:
PixelRegion(math::XYZVector & momentum, float dphi = 0.5, float deta = 0.5, float maxz = 24.0){
vector = momentum;
dPhi = dphi ;
dEta = deta ;
maxZ = maxz ;
cosphi = vector.x()/vector.rho();
sinphi = vector.y()/vector.rho();
atantheta = vector.z()/vector.rho();
}

math::XYZVector vector;
float dPhi,dEta,maxZ;
float cosphi, sinphi, atantheta;
};

// Pixel module class
class PixelModule{
public:

PixelModule() {}
PixelModule(float phi, float eta) : Phi(phi), Eta(eta), x(0.), y(0.), z(0.), DetId(0), Fed(0) {}
bool operator < (const PixelModule& m) const {
if(Phi < m.Phi) return true;
if(Phi == m.Phi && Eta < m.Eta) return true;
if(Phi == m.Phi && Eta == m.Eta && DetId < m.DetId) return true;
return false;
}

float Phi,Eta;
float x, y, z;
unsigned int DetId;
unsigned int Fed;

};


// main class
template<typename TEle, typename TCand>
class SelectedElectronFEDListProducer : public edm::EDProducer {

public:

explicit SelectedElectronFEDListProducer( const edm::ParameterSet &);
virtual ~SelectedElectronFEDListProducer();

protected:

virtual void beginJob() ;
virtual void endJob() ;
virtual void produce(edm::Event&, const edm::EventSetup&);

private:

typedef std::vector<TEle> TEleColl ;
typedef std::vector<TCand> TCandColl ;

public:

void pixelFedDump( std::vector<PixelModule>::const_iterator & itDn,
std::vector<PixelModule>::const_iterator & itUp,
const PixelRegion & region);

private:

// input parameter of the producer
std::vector<edm::InputTag> recoEcalCandidateTags_ ;
std::vector<edm::InputTag> electronTags_ ;
edm::InputTag beamSpotTag_ ;
edm::InputTag rawDataTag_ ;

std::vector<int> isGsfElectronCollection_ ;
std::vector<int> addThisSelectedFEDs_ ;

edm::InputTag HBHERecHitTag_;

edm::FileInPath ESLookupTable_ ;

bool dumpSelectedEcalFed_ ;
bool dumpSelectedSiStripFed_ ;
bool dumpSelectedSiPixelFed_ ;
bool dumpSelectedHCALFed_;
bool dumpAllEcalFed_ ;
bool dumpAllTrackerFed_;
bool dumpAllHCALFed_;

double dRStripRegion_ ;
double dPhiPixelRegion_;
double dEtaPixelRegion_;
double maxZPixelRegion_;
double dRHcalRegion_;

std::string outputLabelModule_ ;

// Token for the input collection
edm::EDGetTokenT<FEDRawDataCollection> rawDataToken_ ;
edm::EDGetTokenT<reco::BeamSpot> beamSpotToken_ ;
edm::EDGetTokenT<HBHERecHitCollection> hbheRecHitToken_;
std::vector<edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs> > recoEcalCandidateToken_ ;
std::vector<edm::EDGetTokenT<TEleColl> > electronToken_;

// used inside the producer
uint32_t eventCounter_ ;
math::XYZVector beamSpotPosition_;

// internal info for ES geometry
int ES_fedId_[2][2][40][40];

// fed list and output raw data
std::vector<uint32_t> fedList_ ;

// get the raw data
FEDRawDataCollection* RawDataCollection_ ;
// get calo geomentry and electronic map
const EcalElectronicsMapping* TheMapping_ ;
const CaloGeometry* geometry_ ;
const CaloSubdetectorGeometry *geometryES_ ;

// get pixel geometry and electronic map
std::unique_ptr<SiPixelFedCablingTree> PixelCabling_;
std::vector<PixelModule> pixelModuleVector_ ;

// get strip geometry and electronic map
const SiStripRegionCabling* StripRegionCabling_;
SiStripRegionCabling::Cabling cabling_ ;
std::pair<double,double> regionDimension_ ;

// get hcal geometry and electronic map
const HcalElectronicsMap* hcalReadoutMap_;

};

#endif
58 changes: 58 additions & 0 deletions Calibration/EcalAlCaRecoProducers/python/alcaElectronStream_cff.py
@@ -0,0 +1,58 @@
import FWCore.ParameterSet.Config as cms

triggerStreamResultsFilter = cms.EDFilter('TriggerResultsFilter',
hltResults = cms.InputTag('TriggerResults'), # HLT results - set to empty to ignore HLT
l1tResults = cms.InputTag(''), # L1 GT results - set to empty to ignore L1
l1tIgnoreMask = cms.bool(False), # use L1 mask
l1techIgnorePrescales = cms.bool(False), # read L1 technical bits from PSB#9, bypassing the prescales
daqPartitions = cms.uint32(0x01), # used by the definition of the L1 mask
throw = cms.bool(True), # throw exception on unknown trigger names
triggerConditions = cms.vstring(
'HLT_Ele27_eta2p1_WP85_Gsf_v1',
'HLT_Ele27_eta2p1_WP85_PFMET_MT50_Gsf_v1',
)
)



HLTselectedElectronFEDList = cms.EDProducer("selectedElectronFEDListProducerGsf",
recoEcalCandidateTags = cms.VInputTag("hltEle27eta2p1WP85PFMT50PFMTFilter","hltEle27WP85GsfTrackIsoFilter"),
electronTags = cms.VInputTag("hltEgammaGsfElectrons"),
isGsfElectronCollection = cms.vint32(True),
beamSpotTag = cms.InputTag("hltOnlineBeamSpot"),
rawDataTag = cms.InputTag("rawDataCollector"),
HBHERecHitTag = cms.InputTag("hltHbhereco"),
ESLookupTable = cms.string('EventFilter/ESDigiToRaw/data/ES_lookup_table.dat'),
dumpSelectedEcalFed = cms.bool(True),
dumpSelectedSiPixelFed = cms.bool(True),
dumpSelectedSiStripFed = cms.bool(True),
dumpSelectedHCALFed = cms.bool(True),
dumpAllEcalFed = cms.bool(False),
dumpAllHcalFed = cms.bool(False),
dumpAllTrackerFed = cms.bool(False),
dPhiPixelRegion = cms.double(0.3),
dEtaPixelRegion = cms.double(0.3),
maxZPixelRegion = cms.double(24.0),
dRStripRegion = cms.double(0.3),
dRHcalRegion = cms.double(0.5),
outputLabelModule = cms.string('StreamElectronRawFed'),
addThisSelectedFEDs = cms.vint32(812,813)
)


streamEvents = cms.untracked.PSet(
SelectEvents = cms.vstring('HLT_Ele27_eta2p1_WP85_Gsf_v1', 'HLT_Ele27_eta2p1_WP85_PFMET_MT50_Gsf_v1'),
outputCommands = cms.untracked.vstring('drop * ',
'keep edmTriggerResults_*_*_*',
'keep *_hltL1GtObjectMap_*_*',
'drop *_*_*_*SIM*',
'keep *_HLTselectedElectronFEDList_*StreamElectronRawFed*_*',
'keep *_*hltFixedGridRhoFastjetAllCaloForMuons*_*_*',
'keep *_*hltFixedGridRhoFastjetAll_*_*',
'keep *_*hltPixelVerticesElectrons*_*_*',
'keep *_*hltPixelVertices_*_*',
'keep *_*hltPFMETProducer_*_*')
)