Commit 5db82bca authored by Sergi Rodriguez Bosca's avatar Sergi Rodriguez Bosca Committed by Walter Lampl
Browse files

Clearing and solving some bugs in jFEX FWD jets

parent 0b1e65f8
......@@ -39,7 +39,11 @@ namespace LVL1 {
//Eta space for core and overlaps, EM only
constexpr static int jFEX_algoSpace_A_lowerEM_eta = 0;
constexpr static int jFEX_algoSpace_A_upperEM_eta = 32;
constexpr static int jFEX_algoSpace_A_upperEM_eta = 33;
//Eta space for core and overlaps, FCAL 2 and 3
constexpr static int jFEX_algoSpace_A_lowerFCAL_eta = 33;
constexpr static int jFEX_algoSpace_A_upperFCAL_eta = 45;
//C side (jFEX module 0):
//there are more values on the C side as the matrix cannot be flipped in the bitwise framework.
......@@ -53,9 +57,13 @@ namespace LVL1 {
constexpr static int jFEX_algoSpace_C_FCAL_end_eta = 24;
//Eta space for core and overlaps, EM only
constexpr static int jFEX_algoSpace_C_lowerEM_eta = 13;
constexpr static int jFEX_algoSpace_C_lowerEM_eta = 12;
constexpr static int jFEX_algoSpace_C_upperEM_eta = 45;
//Eta space for core and overlaps, FCAL 2 and 3
constexpr static int jFEX_algoSpace_C_lowerFCAL_eta = 0;
constexpr static int jFEX_algoSpace_C_upperFCAL_eta = 12;
//Phi space breakdown
constexpr static int jFEX_algoSpace_EMB_start_phi = 8;
constexpr static int jFEX_algoSpace_EMB_end_phi = 24;
......
......@@ -41,7 +41,7 @@ namespace LVL1 {
virtual StatusCode safetyTest() override;
virtual void setup(int inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]) override;
virtual void setup(int inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width], int jfex, int fpga) override;
//virtual int realValue(int ID, int eta) override;
virtual float globalPhi(int nphi, int neta) override;
virtual float globalEta(int nphi, int neta) override;
......@@ -58,10 +58,17 @@ namespace LVL1 {
private:
SG::ReadHandleKey<LVL1::jTowerContainer> m_jFEXForwardJetsAlgo_jTowerContainerKey {this, "MyjTowers", "jTowerContainer", "Input container for jTowers"};
int m_jFEXalgoTowerID[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width];
bool m_storeEnergyRingTTIDs;
std::map<int,std::vector<int> > m_map_Etvalues;
int m_lowerEM_eta;
int m_upperEM_eta;
int m_jfex;
int m_fpga;
//This flag determines if the TT ID which are in the first and second energy rings are stored
//in the jFEXForwardJetsInfo class. It is set to false to reduce quantity data stored in class
bool m_storeEnergyRingTTIDs = false;
};
}//end of namespace
#endif
......@@ -22,57 +22,64 @@
#include "StoreGate/StoreGateSvc.h"
namespace LVL1 {
class jFEXForwardJetsInfo{
class jFEXForwardJetsInfo {
public:
void setCentreTTID(int TT_ID);
int getCentreTTID();
public:
void setCentreTTID(int TT_ID);
int getCentreTTID();
void setCentreTTEta(float centreTTEta);
float getCentreTTEta();
void setCentreTTEta(float centreTTEta);
float getCentreTTEta();
void setCentreTTPhi(float centreTTPhi);
float getCentreTTPhi();
void setCentreTTPhi(float centreTTPhi);
float getCentreTTPhi();
void setCentreLocalTTEta(float centreLocalTTEta);
float getCentreLocalTTEta();
void setCentreLocalTTPhi(float centreLocalTTPhi);
float getCentreLocalTTPhi();
void setCentreLocalTTEta(float centreLocalTTEta);
float getCentreLocalTTEta();
void setCentreLocalTTPhi(float centreLocalTTPhi);
float getCentreLocalTTPhi();
void includeTTinSeed(int TT_ID);
std::vector<int> getTTinSeed();
void includeTTinSeed(int TT_ID);
std::vector<int> getTTinSeed();
void addToSeedET(int seed_ET);
int getSeedET();
void addToSeedET(int seed_ET);
int getSeedET();
void addToFirstEnergyRingET(int firstER_ET);
int getFirstEnergyRingET();
void addToFirstEnergyRingET(int firstER_ET);
int getFirstEnergyRingET();
void includeTTIDinFirstER(int firstER_TTID);
std::vector<int> getTTIDinFirstER();
void includeTTIDinFirstER(int firstER_TTID);
std::vector<int> getTTIDinFirstER();
void addToSecondEnergyRingET(int secondER_ET);
int getSecondEnergyRingET();
void addToSecondEnergyRingET(int secondER_ET);
int getSecondEnergyRingET();
void includeTTIDinSecondER(int secondER_TTID);
std::vector<int> getTTIDinSecondER();
private:
int m_centre_TTID;
float m_centreTTPhi;
float m_centreTTEta;
void includeTTIDinSecondER(int secondER_TTID);
std::vector<int> getTTIDinSecondER();
int m_centreLocalTTPhi;
int m_centreLocalTTEta;
void includeTTinSearchWindow(int TT_ID);
std::vector<int> getTTinSearchWindow();
void addToSearchWindowET(int seed_ET);
int getSearchWindowET();
int m_seed_ET =0;
int m_firstEnergyRing_ET =0;
int m_secondEnergyRing_ET =0;
std::vector<int> m_TTsInSeed ={};
std::vector<int> m_firstEnergyRing_TTIDs = {};
std::vector<int> m_secondEnergyRing_TTIDs = {};
private:
int m_centre_TTID;
float m_centreTTPhi;
float m_centreTTEta;
};
int m_centreLocalTTPhi;
int m_centreLocalTTEta;
int m_seed_ET =0;
int m_SearchWindow_ET =0;
int m_firstEnergyRing_ET =0;
int m_secondEnergyRing_ET =0;
std::vector<int> m_TTsInSeed = {};
std::vector<int> m_TTsInSearchWindow = {};
std::vector<int> m_firstEnergyRing_TTIDs = {};
std::vector<int> m_secondEnergyRing_TTIDs = {};
};
......
......@@ -43,7 +43,7 @@ namespace LVL1 {
virtual void setupCluster(int inputTable[15][15]) override;
virtual unsigned int getRingET() override;
virtual unsigned int getLargeClusterET(unsigned int smallClusterET, unsigned int largeRingET) override;
virtual std::unique_ptr<jFEXLargeRJetTOB> getLargeRJetTOBs() override;
virtual std::unique_ptr<jFEXLargeRJetTOB> getLargeRJetTOBs(int smallClusterET,int TTID) override;
virtual void setFPGAEnergy(std::map<int,std::vector<int> > et_map) override;
protected:
......
#jps.AthenaCommonFlags.AccessMode = "POOLAccess" # use POOL read mode because reading calocells
#svcMgr.EventSelector.InputCollections = jps.AthenaCommonFlags.FilesInput()
from AthenaCommon.GlobalFlags import globalflags
import AthenaPoolCnvSvc.ReadAthenaPool
if type(theApp).__name__ == "fakeAppMgr": theApp.initialize() #this line cuts off pathena when joboption parsing ... since all outputs now declared
#from RecExConfig import AutoConfiguration
#AutoConfiguration.ConfigureSimulationOrRealData()
#AutoConfiguration.ConfigureGeo()
#AutoConfiguration.ConfigureConditionsTag()
#from AthenaCommon.DetFlags import DetFlags
#DetFlags.detdescr.all_setOff()
#DetFlags.detdescr.Calo_setOn()
#include("RecExCond/AllDet_detDescr.py")
#include( "CaloConditions/CaloConditions_jobOptions.py" )
include( "LArDetDescr/LArDetDescr_joboptions.py" )
include( "RegistrationServices/IOVRegistrationSvc_jobOptions.py" )
IOVBeginRun = IOVRunNumberMin
......@@ -67,6 +53,7 @@ StreamAOD.ItemList+=["xAOD::jFexSRJetRoIContainer#*"]
StreamAOD.ItemList+=["xAOD::jFexSRJetRoIAuxContainer#*"]
StreamAOD.ItemList+=["xAOD::jFexLRJetRoIContainer#*"]
StreamAOD.ItemList+=["xAOD::jFexLRJetRoIAuxContainer#*"]
StreamAOD.ItemList+=["xAOD::TriggerTowerContainer#*"]
StreamAOD.ItemList+=["xAOD::jFexTauRoIContainer#*"]
StreamAOD.ItemList+=["xAOD::jFexTauRoIAuxContainer#*"]
StreamAOD.ItemList+=["xAOD::jFexSumETRoIContainer#*"]
......@@ -74,62 +61,14 @@ StreamAOD.ItemList+=["xAOD::jFexSumETRoIAuxContainer#*"]
StreamAOD.ItemList+=["xAOD::jFexMETRoIContainer#*"]
StreamAOD.ItemList+=["xAOD::jFexMETRoIAuxContainer#*"]
# a random selection of containers/keys from parsing checkSG output from original MC, ignoring Aux and removing those
# that seemed to give a crash
# Generic event info
StreamAOD.ItemList+=["xAOD::EventInfo#*"]
StreamAOD.ItemList+=["xAOD::EventAuxInfo#*"]
StreamAOD.ItemList+=["xAOD::EventShape#Kt4EMTopoOriginEventShape"]
StreamAOD.ItemList+=["xAOD::EventShapeAuxInfo#Kt4EMTopoOriginEventShapeAux."]
#Physics Objects
StreamAOD.ItemList+=["xAOD::JetContainer#AntiKt4EMTopoJets"]
StreamAOD.ItemList+=["xAOD::JetAuxContainer#AntiKt4EMTopoJetsAux."]
StreamAOD.ItemList+=["xAOD::MuonContainer#Muons"]
StreamAOD.ItemList+=["xAOD::MuonAuxContainer#MuonsAux."]
StreamAOD.ItemList+=["xAOD::JetContainer#*"]
StreamAOD.ItemList+=["xAOD::JetAuxContainer#*"]
StreamAOD.ItemList+=["xAOD::ElectronContainer#Electrons"]
StreamAOD.ItemList+=["xAOD::ElectronAuxContainer#ElectronsAux."]
StreamAOD.ItemList+=["xAOD::PhotonContainer#Photons"]
StreamAOD.ItemList+=["xAOD::PhotonAuxContainer#PhotonsAux."]
StreamAOD.ItemList+=["xAOD::TauJetContainer#TauJets"]
StreamAOD.ItemList+=["xAOD::TauJetAuxContainer#TauJetsAux.-VertexedClusters."]
StreamAOD.ItemList+=["xAOD::MissingETContainer#MET_Reference_AntiKt4EMTopo"]
StreamAOD.ItemList+=["xAOD::MissingETAuxContainer#MET_Reference_AntiKt4EMTopoAux.-ConstitObjectLinks.-ConstitObjectWeights"]
StreamAOD.ItemList+=["xAOD::VertexContainer#PrimaryVertices"]
StreamAOD.ItemList+=["xAOD::VertexAuxContainer#PrimaryVerticesAux.-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"]
StreamAOD.ItemList+=["xAOD::MissingETAssociationMap#METAssoc_AntiKt4EMTopo"]
StreamAOD.ItemList+=["xAOD::MissingETAuxAssociationMap#METAssoc_AntiKt4EMTopoAux."]
StreamAOD.ItemList+=["xAOD::MissingETContainer#MET_Core_AntiKt4EMTopo"]
StreamAOD.ItemList+=["xAOD::MissingETAuxContainer#MET_Core_AntiKt4EMTopoAux.name.mpx.mpy.sumet.source"]
StreamAOD.ItemList+=["xAOD::MissingETContainer#MET_Track"]
StreamAOD.ItemList+=["xAOD::MissingETAuxContainer#MET_TrackAux.name.mpx.mpy"]
StreamAOD.ItemList+=["xAOD::MissingETComponentMap#METMap_Truth"]
StreamAOD.ItemList+=["xAOD::EmTauRoIContainer#LVL1EmTauRoIs"]
StreamAOD.ItemList+=["xAOD::EmTauRoIAuxContainer#LVL1EmTauRoIsAux."]
StreamAOD.ItemList+=["xAOD::EnergySumRoI#LVL1EnergySumRoI"]
StreamAOD.ItemList+=["xAOD::EnergySumRoIAuxInfo#LVL1EnergySumRoIAux."]
StreamAOD.ItemList+=["xAOD::JetRoIContainer#LVL1JetRoIs"]
StreamAOD.ItemList+=["xAOD::JetRoIAuxContainer#LVL1JetRoIsAux."]
StreamAOD.ItemList+=["xAOD::TruthParticleContainer#*"]
StreamAOD.ItemList+=["xAOD::TruthParticleAuxContainer#TruthParticlesAux.-caloExtension"]
StreamAOD.ItemList+=["xAOD::TruthVertexContainer#*"]
StreamAOD.ItemList+=["xAOD::TruthVertexAuxContainer#*"]
StreamAOD.ItemList+=["xAOD::TruthEventContainer#*"]
StreamAOD.ItemList+=["xAOD::TruthEventAuxContainer#*"]
StreamAOD.ItemList+=["TileCellContainer#MBTSContainer"]
StreamAOD.ItemList+=["xAOD::TrigDecision#xTrigDecision"]
StreamAOD.ItemList+=["xAOD::TrigNavigation#TrigNavigation"]
StreamAOD.ItemList+=["xAOD::TrigConfKeys#TrigConfKeys"]
StreamAOD.ItemList+=["HLT::HLTResult#HLTResult_HLT"]
StreamAOD.ItemList+=["xAOD::TrigDecisionAuxInfo#xTrigDecisionAux."]
StreamAOD.ItemList+=["xAOD::TrigNavigationAuxInfo#TrigNavigationAux."]
......
......@@ -99,7 +99,6 @@ std::vector<int> LVL1::jFEXForwardJetsInfo::getTTIDinFirstER()
return m_firstEnergyRing_TTIDs;
}
void LVL1::jFEXForwardJetsInfo::includeTTIDinSecondER(int secondER_TTID)
{
m_secondEnergyRing_TTIDs.push_back(secondER_TTID);
......@@ -119,4 +118,19 @@ int LVL1::jFEXForwardJetsInfo::getSecondEnergyRingET()
return m_secondEnergyRing_ET;
}
void LVL1::jFEXForwardJetsInfo::includeTTinSearchWindow(int TT_ID){
m_TTsInSearchWindow.push_back(TT_ID);
}
std::vector<int> LVL1::jFEXForwardJetsInfo::getTTinSearchWindow(){
return m_TTsInSearchWindow;
}
void LVL1::jFEXForwardJetsInfo::addToSearchWindowET(int et){
m_SearchWindow_ET += et;
}
int LVL1::jFEXForwardJetsInfo::getSearchWindowET(){
return m_SearchWindow_ET;
}
......@@ -73,13 +73,13 @@ unsigned int LVL1::jFEXLargeRJetAlgo::getLargeClusterET(unsigned int smallCluste
return largeClusterET;
}
std::unique_ptr<jFEXLargeRJetTOB> LVL1::jFEXLargeRJetAlgo::getLargeRJetTOBs(){
std::unique_ptr<jFEXLargeRJetTOB> LVL1::jFEXLargeRJetAlgo::getLargeRJetTOBs(int smallClusterET,int TTID){
std::unique_ptr<jFEXLargeRJetTOB> tob = std::make_unique<jFEXLargeRJetTOB>();
unsigned int et = getLargeClusterET(m_jFEXSmallRJetAlgoTool->getSmallClusterET(),getRingET());
unsigned int et = getLargeClusterET(smallClusterET,getRingET());
tob->setET(et);
tob->setPhi(m_jFEXSmallRJetAlgoTool->getRealPhi(m_jFEXSmallRJetAlgoTool->getTTIDcentre())/10.);
tob->setEta(m_jFEXSmallRJetAlgoTool->getRealEta(m_jFEXSmallRJetAlgoTool->getTTIDcentre())/10.);
tob->setPhi(m_jFEXSmallRJetAlgoTool->getRealPhi(TTID)/10.);
tob->setEta(m_jFEXSmallRJetAlgoTool->getRealEta(TTID)/10.);
tob->setRes(0);
tob->setSat(0);
......
......@@ -114,13 +114,15 @@ void LVL1::jFEXSmallRJetAlgo::buildSeeds()
for(int meta = 1; meta< 6; meta++) {
int et_tmp = 0;
int seedTotalET = 0;
for(int ieta = -1; ieta < 2; ieta++) {
for(int iphi = -1; iphi < 2; iphi++) {
et_tmp = getTTowerET(m_jFEXalgoTowerID[meta + ieta][mphi + iphi]);
for(int iphi = -1; iphi < 2; iphi++) {
for(int ieta = -1; ieta < 2; ieta++) {
//for that TT, build the seed
//here we sum TT ET to calculate seed
et_tmp = getTTowerET(m_jFEXalgoTowerID[mphi + iphi][meta + ieta]);
seedTotalET += et_tmp;
}
}
m_jFEXalgoSearchWindowSeedET[meta -1][mphi -1] = seedTotalET;
m_jFEXalgoSearchWindowSeedET[mphi -1][meta -1] = seedTotalET;
}
}
......@@ -133,41 +135,43 @@ void LVL1::jFEXSmallRJetAlgo::buildSeeds()
//check if central TT is a local maxima
bool LVL1::jFEXSmallRJetAlgo::isSeedLocalMaxima()
{
bool LVL1::jFEXSmallRJetAlgo::isSeedLocalMaxima() {
if(m_seedSet == false) {
ATH_MSG_DEBUG("Local Maxima not checked due to seed not calculated.");
}
if(m_seedSet == true) {
//here put the 24 conditions to determine if the [2][2] TT seed is a local maxima.
else {
//here put the 24 conditions to determine if the TT seed is a local maxima.
int central_seed = m_jFEXalgoSearchWindowSeedET[2][2];
for (int ieta = 0; ieta < 5; ieta++) {
for (int iphi = 0; iphi < 5; iphi++) {
for (int iphi = 0; iphi < 5; iphi++) {
for (int ieta = 0; ieta < 5; ieta++) {
//avoid comparing central seed to itself
if ((ieta == 2) && (iphi == 2)) {
if ((ieta == 2) && (iphi == 2)) {
continue;
}
//strictly less than central
if( (iphi >= ieta) && !(ieta == 3 && iphi == 3) && !(ieta == 4 && iphi == 4) ) {
if(central_seed<m_jFEXalgoSearchWindowSeedET[ieta][iphi]) {
if(central_seed<m_jFEXalgoSearchWindowSeedET[iphi][ieta]) {
return false;
}
}
//less than or equal to central
if((ieta > iphi) || (ieta == 3 && iphi == 3) || (ieta == 4 && iphi == 4)) {
if(central_seed<= m_jFEXalgoSearchWindowSeedET[ieta][iphi]) {
if(central_seed<= m_jFEXalgoSearchWindowSeedET[iphi][ieta]) {
return false;
}
}
}
}
}
}
}
}
return true;
}
bool LVL1::jFEXSmallRJetAlgo::checkDisplacedLM()
{
return m_LMDisplaced;
......@@ -175,31 +179,22 @@ bool LVL1::jFEXSmallRJetAlgo::checkDisplacedLM()
//in this clustering func, the central TT in jet is the parameters
unsigned int LVL1::jFEXSmallRJetAlgo::getSmallClusterET(){
//first summing search window (25 TTs)
unsigned int searchWindowET = 0;
for(int neta = 0; neta< 7; neta++){
for(int nphi = 0; nphi< 7; nphi++){
searchWindowET += getTTowerET(m_jFEXalgoTowerID[neta][nphi]);
unsigned int LVL1::jFEXSmallRJetAlgo::getSmallClusterET() {
int SRJetClusterET = 0;
for(int nphi = -3; nphi< 4; nphi++) {
for(int neta = -3; neta< 4; neta++) {
int DeltaRSquared = std::pow(nphi,2)+std::pow(neta,2);
if(DeltaRSquared < 16) {
SRJetClusterET += getTTowerET(m_jFEXalgoTowerID[3+nphi][3+neta]);
}
}
}
}
//corners removed in 7x7 window to obtain SmallRJetCluser ET;
int cornersET = 0;
cornersET += getTTowerET(m_jFEXalgoTowerID[0][0]);
cornersET += getTTowerET(m_jFEXalgoTowerID[6][6]);
cornersET += getTTowerET(m_jFEXalgoTowerID[0][6]);
cornersET += getTTowerET(m_jFEXalgoTowerID[6][0]);
//SR Jet Energy cluster
int SRJetClusterET = searchWindowET + cornersET;
return SRJetClusterET;
return SRJetClusterET;
}
unsigned int LVL1::jFEXSmallRJetAlgo::getSmallETRing(){
int SmallETRing = getSmallClusterET() - m_jFEXalgoSearchWindowSeedET[3][3];
return SmallETRing;
......
......@@ -28,29 +28,23 @@
namespace LVL1 {
jTowerBuilder::jTowerBuilder(const std::string& type,const std::string& name,const IInterface* parent):
AthAlgTool(type,name,parent)
{
declareInterface<IjTowerBuilder>(this);
jTowerBuilder::jTowerBuilder(const std::string& type,const std::string& name,const IInterface* parent): AthAlgTool(type,name,parent) {
declareInterface<IjTowerBuilder>(this);
}
void jTowerBuilder::init(std::unique_ptr<jTowerContainer> & jTowerContainerRaw)
{
execute(jTowerContainerRaw);
void jTowerBuilder::init(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) {
execute(jTowerContainerRaw);
}
void jTowerBuilder::reset()
{
void jTowerBuilder::reset() {
}
void jTowerBuilder::execute(std::unique_ptr<jTowerContainer> & jTowerContainerRaw)
{
void jTowerBuilder::execute(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) {
BuildAllTowers(jTowerContainerRaw);
}
......@@ -64,138 +58,132 @@ void jTowerBuilder::execute(std::unique_ptr<jTowerContainer> & jTowerContainerRa
// Left Hadronic Endcap ID Tower = 11100000 + X --> These are just Layer 5 of Endcap Towers. They will never be generated as standalone jTowers.
// Right Haronic Endcap ID Tower = 22200000 + X --> These are just Layer 5 of Endcap Towers. They will never be generated as standalone jTowers.
void jTowerBuilder::BuildEMBjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const
{
static constexpr float TT_Size_eta = 0.1;
static constexpr float TT_Size_phi = M_PI/32;
// Regions 0 only. Region 1 is 'transition region'.
for (int ieta = 0; ieta < 14; ++ieta) { // loop over 14 eta steps (ignoring last step as it is transition region)
float centre_eta = (TT_Size_eta*ieta) + (0.5*TT_Size_eta);
for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps
int key_eta = ieta;
float centre_phi = (TT_Size_phi*iphi) + (0.5*TT_Size_phi);
BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 100000, -1, -1*centre_eta, centre_phi);
BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 200000, 1, centre_eta, centre_phi);
void jTowerBuilder::BuildEMBjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const {
// Regions 0 only. Region 1 is 'transition region'.
for (int ieta = 0; ieta < 14; ++ieta) { // loop over 14 eta steps (ignoring last step as it is transition region)
float centre_eta = (0.1*ieta) + (0.05) ;
for (int iphi = 0; iphi < 64; ++iphi) { // loop over 64 phi steps
int key_eta = ieta;
float centre_phi = (0.1*iphi) + (0.05) ;
BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 100000, -1, -1*centre_eta, centre_phi);
BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 200000, 1, centre_eta, centre_phi);
}
}
}
}
void jTowerBuilder::BuildTRANSjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const
{
static constexpr float TT_Size = M_PI/32;
int TRANS_MODIFIER = 14;
int tmpVal = TRANS_MODIFIER;
for (int ieta = tmpVal; ieta < tmpVal + 1; ieta++){ // loop over eta steps
float centre_eta = (0.1*ieta) + (0.05);
for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps
int key_eta = ieta;
float centre_phi = (TT_Size*iphi) + (0.5*TT_Size);
BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 300000, -1,-1*centre_eta, centre_phi);
BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 400000, 1,centre_eta, centre_phi);
void jTowerBuilder::BuildTRANSjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const {
int TRANS_MODIFIER = 14;
int tmpVal = TRANS_MODIFIER;
for (int ieta = tmpVal; ieta < tmpVal + 1; ieta++) { // loop over eta steps
float centre_eta = (0.1*ieta) + (0.05);
for (int iphi = 0; iphi < 64; ++iphi) { // loop over 64 phi steps
int key_eta = ieta;
//float centre_phi = (TT_Size*iphi) + (0.5*TT_Size);
float centre_phi = (0.1*iphi) + (0.05) ;
BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 300000, -1,-1*centre_eta, centre_phi);
BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 400000, 1, centre_eta, centre_phi);
}
}
}
}
void jTowerBuilder::BuildEMEjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const
{
static constexpr float TT_Size = M_PI/32;
// Region 1
int EME_MODIFIER = 15;
int tmpVal = EME_MODIFIER;
for (int ieta = tmpVal; ieta < tmpVal + 3; ++ieta){ // loop over eta steps
float centre_eta =(0.1*ieta) + (0.05) ;
for (int iphi = 0; iphi < 64; ++iphi){ // loop over 64 phi steps
int key_eta = ieta;
float centre_phi = (TT_Size*iphi) + (0.5*TT_Size);
BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 500000, -1, -1*centre_eta, centre_phi);
BuildSingleTower(jTowerContainerRaw, ieta, iphi, key_eta, 600000, 1, centre_eta, centre_phi);
void jTowerBuilder::BuildEMEjTowers(std::unique_ptr<jTowerContainer> & jTowerContainerRaw) const {
// Region 1
int EME_MODIFIER = 15;
int tmpVal = EME_MODIFIER;
for (int ieta = tmpVal; ieta < tmpVal + 3; ++ieta) { // loop over eta steps
float centre_eta =(0.1*ieta) + (0.05) ;