File indexing completed on 2025-08-05 08:15:27
0001
0002
0003 #include <fun4all/Fun4AllBase.h>
0004 #include <InclusiveJet.h>
0005 #include <fun4all/Fun4AllReturnCodes.h>
0006 #include <fun4all/PHTFileServer.h>
0007 #include <phool/PHCompositeNode.h>
0008 #include <phool/getClass.h>
0009 #include <jetbase/JetMap.h>
0010 #include <jetbase/JetContainer.h>
0011 #include <jetbase/Jetv2.h>
0012 #include <jetbase/Jetv1.h>
0013 #include <centrality/CentralityInfo.h>
0014 #include <globalvertex/GlobalVertex.h>
0015 #include <globalvertex/GlobalVertexMap.h>
0016 #include <globalvertex/MbdVertex.h>
0017 #include <globalvertex/MbdVertexMap.h>
0018 #include <calobase/RawTower.h>
0019 #include <calobase/RawTowerContainer.h>
0020 #include <calobase/RawTowerGeom.h>
0021 #include <calobase/RawTowerGeomContainer.h>
0022 #include <calobase/TowerInfoContainer.h>
0023 #include <calobase/TowerInfo.h>
0024 #include <ffarawobjects/Gl1Packet.h>
0025 #include <jetbackground/TowerBackground.h>
0026 #include <calobase/RawTowerDefs.h>
0027 #include <g4main/PHG4TruthInfoContainer.h>
0028 #include <g4main/PHG4Particle.h>
0029 #include <ffaobjects/EventHeaderv1.h>
0030
0031 #include <calobase/RawCluster.h>
0032 #include <calobase/RawClusterContainer.h>
0033 #include <calobase/RawClusterUtility.h>
0034 #include <calobase/RawTowerGeomContainer.h>
0035 #include <calobase/RawTowerGeomContainer_Cylinderv1.h>
0036
0037 #include <trackbase_historic/SvtxTrack.h>
0038 #include <trackbase_historic/SvtxTrackMap.h>
0039 #include <trackbase_historic/SvtxTrackState.h>
0040 #include <trackbase/TrkrCluster.h>
0041 #include <trackbase/TrkrClusterv3.h>
0042 #include <trackbase/TrkrClusterv4.h>
0043 #include <trackbase/TrkrHit.h>
0044 #include <trackbase/TrkrHitSetContainer.h>
0045 #include <trackbase/TrkrDefs.h>
0046 #include <trackbase/ActsGeometry.h>
0047 #include <trackbase/ClusterErrorPara.h>
0048 #include <trackbase/TpcDefs.h>
0049 #include <trackbase/TrkrClusterContainer.h>
0050 #include <trackbase/TrkrHitSet.h>
0051 #include <trackbase/TrkrClusterHitAssoc.h>
0052 #include <trackbase/TrkrClusterIterationMapv1.h>
0053
0054 #include <TTree.h>
0055 #include <iostream>
0056 #include <sstream>
0057 #include <iomanip>
0058 #include <cmath>
0059 #include <vector>
0060
0061 #include "TH1.h"
0062 #include "TH2.h"
0063 #include "TFile.h"
0064 #include <TTree.h>
0065 #include <TVector3.h>
0066
0067
0068 InclusiveJet::InclusiveJet(const std::string& recojetname, const std::string& truthjetname, const std::string& outputfilename):
0069 SubsysReco("InclusiveJet_" + recojetname + "_" + truthjetname)
0070 , m_recoJetName(recojetname)
0071 , m_truthJetName(truthjetname)
0072 , m_outputFileName(outputfilename)
0073 , m_etaRange(-0.7, 0.7)
0074 , m_ptRange(5, 100)
0075 , m_doTruthJets(0)
0076 , m_doTruth(0)
0077 , m_doTowers(0)
0078 , m_doEmcalClusters(0)
0079 , m_doTopoclusters(0)
0080 , m_doSeeds(0)
0081 , m_doTracks(0)
0082 , m_T(nullptr)
0083 , m_event(-1)
0084 , m_nTruthJet(-1)
0085 , m_nJet(-1)
0086 , m_triggerVector()
0087 , m_nComponent()
0088 , m_eta()
0089 , m_phi()
0090 , m_e()
0091 , m_pt()
0092 , m_jetEmcalE()
0093 , m_jetIhcalE()
0094 , m_jetOhcalE()
0095 , m_truthNComponent()
0096 , m_truthEta()
0097 , m_truthPhi()
0098 , m_truthE()
0099 , m_truthPt()
0100 , m_eta_rawseed()
0101 , m_phi_rawseed()
0102 , m_pt_rawseed()
0103 , m_e_rawseed()
0104 , m_rawseed_cut()
0105 , m_eta_subseed()
0106 , m_phi_subseed()
0107 , m_pt_subseed()
0108 , m_e_subseed()
0109 , m_subseed_cut()
0110 {
0111 std::cout << "InclusiveJet::InclusiveJet(const std::string &name) Calling ctor" << std::endl;
0112 }
0113
0114
0115 InclusiveJet::~InclusiveJet()
0116 {
0117 std::cout << "InclusiveJet::~InclusiveJet() Calling dtor" << std::endl;
0118 }
0119
0120
0121
0122 int InclusiveJet::Init(PHCompositeNode *topNode)
0123 {
0124 std::cout << "InclusiveJet::Init(PHCompositeNode *topNode) Initializing" << std::endl;
0125 PHTFileServer::get().open(m_outputFileName, "RECREATE");
0126 std::cout << "InclusiveJet::Init - Output to " << m_outputFileName << std::endl;
0127
0128
0129 m_T = new TTree("T", "MyJetAnalysis Tree");
0130 m_T->Branch("m_event", &m_event, "event/I");
0131 m_T->Branch("nJet", &m_nJet, "nJet/I");
0132 m_T->Branch("zvtx", &m_zvtx);
0133 m_T->Branch("nComponent", &m_nComponent);
0134 m_T->Branch("triggerVector", &m_triggerVector);
0135
0136 m_T->Branch("eta", &m_eta);
0137 m_T->Branch("phi", &m_phi);
0138 m_T->Branch("e", &m_e);
0139 m_T->Branch("pt", &m_pt);
0140
0141 m_T->Branch("jetEmcalE", &m_jetEmcalE);
0142 m_T->Branch("jetIhcalE", &m_jetIhcalE);
0143 m_T->Branch("jetOhcalE", &m_jetOhcalE);
0144
0145 if(m_doTruthJets){
0146 m_T->Branch("nTruthJet", &m_nTruthJet);
0147 m_T->Branch("truthNComponent", &m_truthNComponent);
0148 m_T->Branch("truthEta", &m_truthEta);
0149 m_T->Branch("truthPhi", &m_truthPhi);
0150 m_T->Branch("truthE", &m_truthE);
0151 m_T->Branch("truthPt", &m_truthPt);
0152 }
0153
0154 if(m_doSeeds){
0155 m_T->Branch("rawseedEta", &m_eta_rawseed);
0156 m_T->Branch("rawseedPhi", &m_phi_rawseed);
0157 m_T->Branch("rawseedPt", &m_pt_rawseed);
0158 m_T->Branch("rawseedE", &m_e_rawseed);
0159 m_T->Branch("rawseedCut", &m_rawseed_cut);
0160 m_T->Branch("subseedEta", &m_eta_subseed);
0161 m_T->Branch("subseedPhi", &m_phi_subseed);
0162 m_T->Branch("subseedPt", &m_pt_subseed);
0163 m_T->Branch("subseedE", &m_e_subseed);
0164 m_T->Branch("subseedCut", &m_subseed_cut);
0165 }
0166
0167 if(m_doTowers) {
0168 m_T->Branch("emcaln",&m_emcaln,"emcaln/I");
0169 m_T->Branch("emcale",m_emcale,"emcale[emcaln]/F");
0170 m_T->Branch("emcalchi2", m_emcalchi2,"emcalchi2[emcaln]/F");
0171 m_T->Branch("emcaleta",m_emcaleta,"emcaleta[emcaln]/F");
0172 m_T->Branch("emcalphi",m_emcalphi,"emcalphi[emcaln]/F");
0173 m_T->Branch("emcalieta",m_emcalieta,"emcalieta[emcaln]/I");
0174 m_T->Branch("emcaliphi",m_emcaliphi,"emcaliphi[emcaln]/I");
0175 m_T->Branch("emcalstatus",m_emcalstatus,"emcalstatus[emcaln]/I");
0176
0177
0178 m_T->Branch("ihcaln",&m_ihcaln,"ihcaln/I");
0179 m_T->Branch("ihcale",m_ihcale,"ihcale[ihcaln]/F");
0180 m_T->Branch("ihcalchi2", m_ihcalchi2,"ihcalchi2[ihcaln]/F");
0181 m_T->Branch("ihcaleta",m_ihcaleta,"ihcaleta[ihcaln]/F");
0182 m_T->Branch("ihcalphi",m_ihcalphi,"ihcalphi[ihcaln]/F");
0183 m_T->Branch("ihcalieta",m_ihcalieta,"ihcalieta[ihcaln]/I");
0184 m_T->Branch("ihcaliphi",m_ihcaliphi,"ihcaliphi[ihcaln]/I");
0185 m_T->Branch("ihcalstatus",m_ihcalstatus,"ihcalstatus[ihcaln]/I");
0186
0187
0188 m_T->Branch("ohcaln",&m_ohcaln,"ohcaln/I");
0189 m_T->Branch("ohcale",m_ohcale,"ohcale[ohcaln]/F");
0190 m_T->Branch("ohcalchi2", m_ohcalchi2,"ohcalchi2[ohcaln]/F");
0191 m_T->Branch("ohcaleta",m_ohcaleta,"ohcaleta[ohcaln]/F");
0192 m_T->Branch("ohcalphi",m_ohcalphi,"ohcalphi[ohcaln]/F");
0193 m_T->Branch("ohcalieta",m_ohcalieta,"ohcalieta[ohcaln]/I");
0194 m_T->Branch("ohcaliphi",m_ohcaliphi,"ohcaliphi[ohcaln]/I");
0195 m_T->Branch("ohcalstatus",m_ohcalstatus,"ohcalstatus[ohcaln]/I");
0196
0197 }
0198
0199 if(m_doEmcalClusters) {
0200 m_T->Branch("emcal_clsmult",&m_emcal_clsmult,"emcal_clsmult/I");
0201 m_T->Branch("emcal_cluster_e",m_emcal_cluster_e,"emcal_cluster_e[emcal_clsmult]/F");
0202 m_T->Branch("emcal_cluster_eta",m_emcal_cluster_eta,"emcal_cluster_eta[emcal_clsmult]/F");
0203 m_T->Branch("emcal_cluster_phi",m_emcal_cluster_phi,"emcal_cluster_phi[emcal_clsmult]/F");
0204 }
0205
0206 if(m_doTopoclusters) {
0207 m_T->Branch("clsmult",&m_clsmult,"clsmult/I");
0208 m_T->Branch("cluster_e",m_cluster_e,"cluster_e[clsmult]/F");
0209 m_T->Branch("cluster_eta",m_cluster_eta,"cluster_eta[clsmult]/F");
0210 m_T->Branch("cluster_phi",m_cluster_phi,"cluster_phi[clsmult]/F");
0211 m_T->Branch("cluster_ntowers",m_cluster_ntowers,"cluster_ntowers[clsmult]/I");
0212 m_T->Branch("cluster_tower_e",m_cluster_tower_e,"cluster_tower_e[clsmult][500]/F");
0213 m_T->Branch("cluster_tower_calo",m_cluster_tower_calo,"cluster_tower_calo[clsmult][500]/I");
0214 m_T->Branch("cluster_tower_ieta",m_cluster_tower_ieta,"cluster_tower_ieta[clsmult][500]/I");
0215 m_T->Branch("cluster_tower_iphi",m_cluster_tower_iphi,"cluster_tower_iphi[clsmult][500]/I");
0216 }
0217
0218 if(m_doTruth) {
0219 m_T->Branch("truthpar_n",&truthpar_n,"truthpar_n/I");
0220 m_T->Branch("truthpar_pz",truthpar_pz,"truthpar_pz[truthpar_n]/F");
0221 m_T->Branch("truthpar_pt",truthpar_pt,"truthpar_pt[truthpar_n]/F");
0222 m_T->Branch("truthpar_e",truthpar_e,"truthpar_e[truthpar_n]/F");
0223 m_T->Branch("truthpar_eta",truthpar_eta,"truthpar_eta[truthpar_n]/F");
0224 m_T->Branch("truthpar_phi",truthpar_phi,"truthpar_phi[truthpar_n]/F");
0225 m_T->Branch("truthpar_pid",truthpar_pid,"truthpar_pid[truthpar_n]/I");
0226 }
0227
0228 if(m_doTracks) {
0229 m_T->Branch("trkmult",&m_trkmult,"trkmult/I");
0230 m_T->Branch("tr_p",m_tr_p,"tr_p[trkmult]/F");
0231 m_T->Branch("tr_pt",m_tr_pt,"tr_pt[trkmult]/F");
0232 m_T->Branch("tr_eta",m_tr_eta,"tr_eta[trkmult]/F");
0233 m_T->Branch("tr_phi",m_tr_phi,"tr_phi[trkmult]/F");
0234 m_T->Branch("tr_charge",m_tr_charge,"tr_charge[trkmult]/I");
0235 m_T->Branch("tr_chisq",m_tr_chisq,"tr_chisq[trkmult]/F");
0236 m_T->Branch("tr_ndf",m_tr_ndf,"tr_ndf[trkmult]/I");
0237 m_T->Branch("tr_nintt",m_tr_nintt,"tr_nintt[trkmult]/I");
0238 m_T->Branch("tr_nmaps",m_tr_nmaps,"tr_nmaps[trkmult]/I");
0239 m_T->Branch("tr_ntpc",m_tr_ntpc,"tr_ntpc[trkmult]/I");
0240 m_T->Branch("tr_quality",m_tr_quality,"tr_quality[trkmult]/F");
0241 m_T->Branch("tr_vertex_id",m_tr_vertex_id,"tr_vertex_id[trkmult]/I");
0242 m_T->Branch("tr_cemc_eta",m_tr_cemc_eta,"tr_cemc_eta[trkmult]/F");
0243 m_T->Branch("tr_cemc_phi",m_tr_cemc_phi,"tr_cemc_phi[trkmult]/F");
0244 m_T->Branch("tr_ihcal_eta",m_tr_ihcal_eta,"tr_ihcal_eta[trkmult]/F");
0245 m_T->Branch("tr_ihcal_phi",m_tr_ihcal_phi,"tr_ihcal_phi[trkmult]/F");
0246 m_T->Branch("tr_ohcal_eta",m_tr_ohcal_eta,"tr_ohcal_eta[trkmult]/F");
0247 m_T->Branch("tr_ohcal_phi",m_tr_ohcal_phi,"tr_ohcal_phi[trkmult]/F");
0248 m_T->Branch("tr_outer_cemc_eta",m_tr_outer_cemc_eta,"tr_outer_cemc_eta[trkmult]/F");
0249 m_T->Branch("tr_outer_cemc_phi",m_tr_outer_cemc_phi,"tr_outer_cemc_phi[trkmult]/F");
0250 m_T->Branch("tr_outer_ihcal_eta",m_tr_outer_ihcal_eta,"tr_outer_ihcal_eta[trkmult]/F");
0251 m_T->Branch("tr_outer_ihcal_phi",m_tr_outer_ihcal_phi,"tr_outer_ihcal_phi[trkmult]/F");
0252 m_T->Branch("tr_outer_ohcal_eta",m_tr_outer_ohcal_eta,"tr_outer_ohcal_eta[trkmult]/F");
0253 m_T->Branch("tr_outer_ohcal_phi",m_tr_outer_ohcal_phi,"tr_outer_ohcal_phi[trkmult]/F");
0254 }
0255
0256 return Fun4AllReturnCodes::EVENT_OK;
0257 }
0258
0259
0260 int InclusiveJet::InitRun(PHCompositeNode *topNode)
0261 {
0262 std::cout << "InclusiveJet::InitRun(PHCompositeNode *topNode) Initializing for Run XXX" << std::endl;
0263
0264 return Fun4AllReturnCodes::EVENT_OK;
0265 }
0266
0267
0268 int InclusiveJet::process_event(PHCompositeNode *topNode)
0269 {
0270
0271 ++m_event;
0272
0273
0274 JetContainer* jets = findNode::getClass<JetContainer>(topNode, m_recoJetName);
0275 if (!jets)
0276 {
0277 std::cout
0278 << "MyJetAnalysis::process_event - Error can not find DST Reco JetContainer node "
0279 << m_recoJetName << std::endl;
0280 exit(-1);
0281 }
0282
0283
0284
0285 JetContainer* jetsMC = findNode::getClass<JetContainer>(topNode, m_truthJetName);
0286 if (!jetsMC && m_doTruthJets)
0287 {
0288 std::cout
0289 << "MyJetAnalysis::process_event - Error can not find DST Truth JetMap node "
0290 << m_truthJetName << std::endl;
0291 exit(-1);
0292 }
0293
0294
0295 JetContainer* seedjetsraw = findNode::getClass<JetContainer>(topNode, "AntiKt_TowerInfo_HIRecoSeedsRaw_r02");
0296 if (!seedjetsraw && m_doSeeds)
0297 {
0298 std::cout
0299 << "MyJetAnalysis::process_event - Error can not find DST raw seed jets "
0300 << std::endl;
0301 exit(-1);
0302 }
0303
0304 JetContainer* seedjetssub = findNode::getClass<JetContainer>(topNode, "AntiKt_TowerInfo_HIRecoSeedsSub_r02");
0305 if (!seedjetssub && m_doSeeds)
0306 {
0307 std::cout
0308 << "MyJetAnalysis::process_event - Error can not find DST subtracted seed jets "
0309 << std::endl;
0310 exit(-1);
0311 }
0312
0313
0314
0315 GlobalVertexMap *vertexmap = findNode::getClass<GlobalVertexMap>(topNode, "GlobalVertexMap");
0316 if (!vertexmap)
0317 {
0318 std::cout
0319 << "MyJetAnalysis::process_event - Error can not find global vertex node "
0320 << std::endl;
0321 exit(-1);
0322 }
0323 if (vertexmap->empty())
0324 {
0325 std::cout
0326 << "MyJetAnalysis::process_event - global vertex node is empty "
0327 << std::endl;
0328 return Fun4AllReturnCodes::ABORTEVENT;
0329 }
0330 else
0331 {
0332 GlobalVertex *globalVertex = vertexmap->begin()->second;
0333
0334
0335
0336 auto mbdStartIter = globalVertex->find_vertexes(GlobalVertex::MBD);
0337 auto mbdEndIter = globalVertex->end_vertexes();
0338
0339 for (auto iter = mbdStartIter; iter != mbdEndIter; ++iter)
0340 {
0341 const auto &[type, vertexVec] = *iter;
0342 if (type != GlobalVertex::MBD) continue;
0343 for (const auto *vertex : vertexVec)
0344 {
0345 if (!vertex) continue;
0346 m_zvtx = vertex->get_z();
0347 }
0348 }
0349
0350 }
0351
0352
0353
0354
0355
0356
0357
0358
0359
0360
0361
0362
0363
0364
0365
0366
0367
0368
0369
0370
0371
0372
0373
0374
0375
0376 if (fabs(m_zvtx) > 30) {
0377 return Fun4AllReturnCodes::EVENT_OK;
0378 }
0379
0380
0381 TowerInfoContainer *towersEM3 = findNode::getClass<TowerInfoContainer>(topNode, "TOWERINFO_CALIB_CEMC_RETOWER");
0382 TowerInfoContainer *towersIH3 = findNode::getClass<TowerInfoContainer>(topNode, "TOWERINFO_CALIB_HCALIN");
0383 TowerInfoContainer *towersOH3 = findNode::getClass<TowerInfoContainer>(topNode, "TOWERINFO_CALIB_HCALOUT");
0384 RawTowerGeomContainer *tower_geomEM = findNode::getClass<RawTowerGeomContainer>(topNode, "TOWERGEOM_CEMC");
0385 RawTowerGeomContainer *tower_geom = findNode::getClass<RawTowerGeomContainer>(topNode, "TOWERGEOM_HCALIN");
0386 RawTowerGeomContainer *tower_geomOH = findNode::getClass<RawTowerGeomContainer>(topNode, "TOWERGEOM_HCALOUT");
0387 if(!towersEM3 || !towersIH3 || !towersOH3){
0388 std::cout
0389 <<"MyJetAnalysis::process_event - Error can not find raw tower node "
0390 << std::endl;
0391 exit(-1);
0392 }
0393
0394 TowerInfoContainer *EMtowers = findNode::getClass<TowerInfoContainer>(topNode, "TOWERINFO_CALIB_CEMC");
0395 TowerInfoContainer *IHtowers = findNode::getClass<TowerInfoContainer>(topNode, "TOWERINFO_CALIB_HCALIN");
0396 TowerInfoContainer *OHtowers = findNode::getClass<TowerInfoContainer>(topNode, "TOWERINFO_CALIB_HCALOUT");
0397
0398 if(!tower_geom || !tower_geomOH){
0399 std::cout
0400 <<"MyJetAnalysis::process_event - Error can not find raw tower geometry "
0401 << std::endl;
0402 exit(-1);
0403 }
0404
0405 RawClusterContainer *topoclusters = findNode::getClass<RawClusterContainer>(topNode,"TOPOCLUSTER_ALLCALO");
0406 if (m_doTopoclusters && !topoclusters) {
0407 std::cout
0408 <<"MyJetAnalysis::process_event - Error can not find topoclusters "
0409 << std::endl;
0410 exit(-1);
0411 }
0412
0413 RawClusterContainer *emcalclusters = findNode::getClass<RawClusterContainer>(topNode,"CLUSTERINFO_CEMC");
0414 if (m_doEmcalClusters && !emcalclusters) {
0415 std::cout
0416 <<"MyJetAnalysis::process_event - Error can not find EMCal clusters "
0417 << std::endl;
0418 exit(-1);
0419 }
0420
0421 PHG4TruthInfoContainer *truthinfo = findNode::getClass<PHG4TruthInfoContainer>(topNode, "G4TruthInfo");
0422 if (m_doTruth && !truthinfo) {
0423 std::cout << PHWHERE << "PHG4TruthInfoContainer node is missing, can't collect G4 truth particles"<< std::endl;
0424 return Fun4AllReturnCodes::EVENT_OK;
0425 }
0426
0427 if(m_doTracks){
0428 RawTowerGeomContainer_Cylinderv1* cemcGeomContainer = findNode::getClass<RawTowerGeomContainer_Cylinderv1>(topNode, "TOWERGEOM_CEMC");
0429 RawTowerGeomContainer_Cylinderv1* ihcalGeomContainer = findNode::getClass<RawTowerGeomContainer_Cylinderv1>(topNode, "TOWERGEOM_HCALIN");
0430 RawTowerGeomContainer_Cylinderv1* ohcalGeomContainer = findNode::getClass<RawTowerGeomContainer_Cylinderv1>(topNode, "TOWERGEOM_HCALOUT");
0431
0432 if(!cemcGeomContainer){
0433 std::cout << "ERROR: TOWERGEOM_CEMC not found" << std::endl;
0434 }
0435 if(!ihcalGeomContainer){
0436 std::cout << "ERROR: TOWERGEOM_HCALIN not found" << std::endl;
0437 }
0438 if(!ohcalGeomContainer){
0439 std::cout << "ERROR: TOWERGEOM_HCALOUT not found" << std::endl;
0440 }
0441
0442 m_cemcRadius = cemcGeomContainer->get_radius();
0443 m_ihcalRadius = ihcalGeomContainer->get_radius();
0444 m_ohcalRadius = ohcalGeomContainer->get_radius();
0445 m_cemcOuterRadius = cemcGeomContainer->get_radius() + cemcGeomContainer->get_thickness();
0446 m_ihcalOuterRadius = ihcalGeomContainer->get_radius() + ihcalGeomContainer->get_thickness();
0447 m_ohcalOuterRadius = ohcalGeomContainer->get_radius() + ohcalGeomContainer->get_thickness();
0448 }
0449
0450
0451 m_nJet = 0;
0452 float leadpt = 0;
0453 for (auto jet : *jets)
0454 {
0455 bool eta_cut = (jet->get_eta() >= m_etaRange.first) and (jet->get_eta() <= m_etaRange.second);
0456 bool pt_cut = (jet->get_pt() >= m_ptRange.first) and (jet->get_pt() <= m_ptRange.second);
0457 if ((not eta_cut) or (not pt_cut)) continue;
0458
0459
0460
0461 m_nComponent.push_back(jet->size_comp());
0462 m_eta.push_back(jet->get_eta());
0463 m_phi.push_back(jet->get_phi());
0464 m_e.push_back(jet->get_e());
0465 m_pt.push_back(jet->get_pt());
0466
0467 if (m_pt.back() > leadpt) { leadpt = m_pt.back(); }
0468
0469 float emcalE = 0;
0470 float ihcalE = 0;
0471 float ohcalE = 0;
0472 for (auto comp: jet->get_comp_vec())
0473 {
0474 TowerInfo *tower;
0475 unsigned int channel = comp.second;
0476 if (comp.first == 14 || comp.first == 29 || comp.first == 28) {
0477 tower = towersEM3->get_tower_at_channel(channel);
0478 if(!tower) { continue; }
0479 emcalE += tower->get_energy();
0480 }
0481 if (comp.first == 15 || comp.first == 30 || comp.first == 26)
0482 {
0483 tower = towersIH3->get_tower_at_channel(channel);
0484 if(!tower) { continue; }
0485 ihcalE += tower->get_energy();
0486 }
0487
0488 if (comp.first == 16 || comp.first == 31 || comp.first == 27)
0489 {
0490 tower = towersOH3->get_tower_at_channel(channel);
0491 if(!tower) { continue; }
0492 ohcalE += tower->get_energy();
0493 }
0494 }
0495
0496 m_jetEmcalE.push_back(emcalE);
0497 m_jetIhcalE.push_back(ihcalE);
0498 m_jetOhcalE.push_back(ohcalE);
0499
0500 if (ohcalE/m_e.back() > 0.9) {
0501 std::cout << "event " << m_event << " emcalE " << emcalE << " ohcalE " << ohcalE << " totalE " << emcalE + ihcalE + ohcalE << " Jet E " << m_e.back() << std::endl;
0502
0503 }
0504 m_nJet++;
0505 }
0506
0507 if (m_doLeadPtCut && leadpt < m_leadPtCut) {
0508 return Fun4AllReturnCodes::EVENT_OK;
0509 }
0510
0511
0512 if(m_doTruthJets)
0513 {
0514 m_nTruthJet = 0;
0515
0516 for (auto truthjet : *jetsMC)
0517 {
0518
0519
0520 bool eta_cut = (truthjet->get_eta() >= m_etaRange.first) and (truthjet->get_eta() <= m_etaRange.second);
0521 bool pt_cut = (truthjet->get_pt() >= m_ptRange.first) and (truthjet->get_pt() <= m_ptRange.second);
0522 if ((not eta_cut) or (not pt_cut)) continue;
0523 m_truthNComponent.push_back(truthjet->size_comp());
0524 m_truthEta.push_back(truthjet->get_eta());
0525 m_truthPhi.push_back(truthjet->get_phi());
0526 m_truthE.push_back(truthjet->get_e());
0527 m_truthPt.push_back(truthjet->get_pt());
0528 m_nTruthJet++;
0529 }
0530 }
0531
0532
0533 if(m_doSeeds)
0534 {
0535 for (auto jet : *seedjetsraw)
0536 {
0537 int passesCut = jet->get_property(seedjetsraw->property_index(Jet::PROPERTY::prop_SeedItr));
0538 m_eta_rawseed.push_back(jet->get_eta());
0539 m_phi_rawseed.push_back(jet->get_phi());
0540 m_e_rawseed.push_back(jet->get_e());
0541 m_pt_rawseed.push_back(jet->get_pt());
0542 m_rawseed_cut.push_back(passesCut);
0543 }
0544
0545 for (auto jet : *seedjetssub)
0546 {
0547 int passesCut = jet->get_property(seedjetssub->property_index(Jet::PROPERTY::prop_SeedItr));
0548 m_eta_subseed.push_back(jet->get_eta());
0549 m_phi_subseed.push_back(jet->get_phi());
0550 m_e_subseed.push_back(jet->get_e());
0551 m_pt_subseed.push_back(jet->get_pt());
0552 m_subseed_cut.push_back(passesCut);
0553 }
0554 }
0555
0556
0557 Gl1Packet *gl1PacketInfo = findNode::getClass<Gl1Packet>(topNode, "GL1Packet");
0558 if (m_doTriggerCut && !gl1PacketInfo)
0559 {
0560 std::cout << PHWHERE << "caloTreeGen::process_event: GL1Packet node is missing. Output related to this node will be empty" << std::endl;
0561 }
0562
0563 if (gl1PacketInfo) {
0564 bool jettrig = false;
0565 uint64_t triggervec = gl1PacketInfo->getScaledVector();
0566 for (int i = 0; i < 64; i++) {
0567 bool trig_decision = ((triggervec & 0x1U) == 0x1U);
0568 if (trig_decision) {
0569 m_triggerVector.push_back(i);
0570 if ((i >= 16 && i <= 23) || (i >= 32 && i <= 35)) { jettrig = true; }
0571 }
0572 triggervec = triggervec >> 1U;
0573 }
0574 if (m_doTriggerCut && !jettrig) {
0575 return Fun4AllReturnCodes::EVENT_OK;
0576 }
0577 }
0578
0579 if (m_doTowers) {
0580 if(EMtowers) {
0581 m_emcaln = 0;
0582 int nchannels = 24576;
0583 for(int i=0; i<nchannels; ++i) {
0584 TowerInfo *tower = EMtowers->get_tower_at_channel(i);
0585
0586 int key = EMtowers->encode_key(i);
0587 int etabin = EMtowers->getTowerEtaBin(key);
0588 int phibin = EMtowers->getTowerPhiBin(key);
0589 m_emcale[m_emcaln] = tower->get_energy();
0590 m_emcalchi2[m_emcaln] = tower->get_chi2();
0591 if (!tower->get_isBadChi2() && tower->get_chi2() > 10000) {
0592 std::cout << "event " << m_event << " ieta " << etabin << " iphi " << phibin << " chi2 " << tower->get_chi2() << " e " << tower->get_energy() << std::endl;
0593 }
0594 const RawTowerDefs::keytype geomkey = RawTowerDefs::encode_towerid(RawTowerDefs::CalorimeterId::CEMC, etabin, phibin);
0595 RawTowerGeom *geom = tower_geomEM->get_tower_geometry(geomkey);
0596 TVector3 tower_pos;
0597 tower_pos.SetXYZ(geom->get_center_x(),geom->get_center_y(),geom->get_center_z() - m_zvtx);
0598 m_emcaleta[m_emcaln] = tower_pos.Eta();
0599 m_emcalphi[m_emcaln] = tower_pos.Phi();
0600 m_emcalieta[m_emcaln] = etabin;
0601 m_emcaliphi[m_emcaln] = phibin;
0602 m_emcalstatus[m_emcaln] = tower->get_status();
0603
0604 m_emcaln++;
0605 }
0606 }
0607
0608 if(IHtowers) {
0609 m_ihcaln = 0;
0610 int nchannels = 1536;
0611 for(int i=0; i<nchannels; ++i) {
0612 TowerInfo *tower = IHtowers->get_tower_at_channel(i);
0613
0614 int key = IHtowers->encode_key(i);
0615 int etabin = IHtowers->getTowerEtaBin(key);
0616 int phibin = IHtowers->getTowerPhiBin(key);
0617 m_ihcale[m_ihcaln] = tower->get_energy();
0618 m_ihcalchi2[m_ihcaln] = tower->get_chi2();
0619 const RawTowerDefs::keytype geomkey = RawTowerDefs::encode_towerid(RawTowerDefs::CalorimeterId::HCALIN, etabin, phibin);
0620 RawTowerGeom *geom = tower_geom->get_tower_geometry(geomkey);
0621 TVector3 tower_pos;
0622 tower_pos.SetXYZ(geom->get_center_x(),geom->get_center_y(),geom->get_center_z() - m_zvtx);
0623 m_ihcaleta[m_ihcaln] = tower_pos.Eta();
0624 m_ihcalphi[m_ihcaln] = tower_pos.Phi();
0625 m_ihcalieta[m_ihcaln] = etabin;
0626 m_ihcaliphi[m_ihcaln] = phibin;
0627 m_ihcalstatus[m_ihcaln] = tower->get_status();
0628
0629 m_ihcaln++;
0630 }
0631 }
0632
0633 if(OHtowers) {
0634 m_ohcaln = 0;
0635 int nchannels = 1536;
0636 for(int i=0; i<nchannels; ++i) {
0637 TowerInfo *tower = OHtowers->get_tower_at_channel(i);
0638
0639 int key = OHtowers->encode_key(i);
0640 int etabin = OHtowers->getTowerEtaBin(key);
0641 int phibin = OHtowers->getTowerPhiBin(key);
0642 m_ohcale[m_ohcaln] = tower->get_energy();
0643 m_ohcalchi2[m_ohcaln] = tower->get_chi2();
0644 const RawTowerDefs::keytype geomkey = RawTowerDefs::encode_towerid(RawTowerDefs::CalorimeterId::HCALOUT, etabin, phibin);
0645 RawTowerGeom *geom = tower_geomOH->get_tower_geometry(geomkey);
0646 TVector3 tower_pos;
0647 tower_pos.SetXYZ(geom->get_center_x(),geom->get_center_y(),geom->get_center_z() - m_zvtx);
0648 m_ohcaleta[m_ohcaln] = tower_pos.Eta();
0649 m_ohcalphi[m_ohcaln] = tower_pos.Phi();
0650 m_ohcalieta[m_ohcaln] = etabin;
0651 m_ohcaliphi[m_ohcaln] = phibin;
0652 m_ohcalstatus[m_ohcaln] = tower->get_status();
0653
0654 m_ohcaln++;
0655 }
0656 }
0657 }
0658 if (m_doEmcalClusters) {
0659 if (emcalclusters) {
0660 RawClusterContainer::Map clusterMap = emcalclusters->getClustersMap();
0661 m_emcal_clsmult = 0;
0662 for(auto entry : clusterMap){
0663 RawCluster* cluster = entry.second;
0664 CLHEP::Hep3Vector origin(0, 0, m_zvtx);
0665 m_emcal_cluster_e[m_emcal_clsmult] = cluster->get_energy();
0666 m_emcal_cluster_eta[m_emcal_clsmult] = RawClusterUtility::GetPseudorapidity(*cluster, origin);
0667 m_emcal_cluster_phi[m_emcal_clsmult] = RawClusterUtility::GetAzimuthAngle(*cluster, origin);
0668 m_emcal_clsmult++;
0669 if (m_emcal_clsmult == 10000) { break; }
0670 }
0671 }
0672 }
0673 if (m_doTopoclusters) {
0674 if (topoclusters) {
0675 RawClusterContainer::Map clusterMap = topoclusters->getClustersMap();
0676 m_clsmult = 0;
0677 for(auto entry : clusterMap){
0678 RawCluster* cluster = entry.second;
0679 CLHEP::Hep3Vector origin(0, 0, m_zvtx);
0680 m_cluster_e[m_clsmult] = cluster->get_energy();
0681 m_cluster_eta[m_clsmult] = RawClusterUtility::GetPseudorapidity(*cluster, origin);
0682 m_cluster_phi[m_clsmult] = RawClusterUtility::GetAzimuthAngle(*cluster, origin);
0683 m_cluster_ntowers[m_clsmult] = (int)cluster->getNTowers();
0684 int m_clstower = 0;
0685 for (const auto& [tower_id, tower_e] : cluster->get_towermap())
0686 {
0687
0688
0689
0690
0691
0692
0693
0694
0695
0696
0697 m_cluster_tower_calo[m_clsmult][m_clstower] = static_cast<int>(RawTowerDefs::decode_caloid(tower_id));
0698 m_cluster_tower_ieta[m_clsmult][m_clstower] = RawTowerDefs::decode_index1(tower_id);
0699 m_cluster_tower_iphi[m_clsmult][m_clstower] = RawTowerDefs::decode_index2(tower_id);
0700 m_cluster_tower_e[m_clsmult][m_clstower] = tower_e;
0701
0702
0703
0704
0705
0706
0707
0708
0709
0710
0711 m_clstower++;
0712 }
0713
0714 m_clsmult++;
0715 if (m_clsmult == 10000) { break; }
0716 }
0717 }
0718 }
0719
0720 if (m_doTruth) {
0721 PHG4TruthInfoContainer::Range range = truthinfo->GetPrimaryParticleRange();
0722 truthpar_n = 0;
0723 for (PHG4TruthInfoContainer::ConstIterator iter = range.first; iter != range.second; ++iter) {
0724
0725 const PHG4Particle *truth = iter->second;
0726 if (!truth) { std::cout << "missing particle" << std::endl; continue; }
0727 if (!truthinfo->is_primary(truth)) continue;
0728
0729 truthpar_pt[truthpar_n] = sqrt(truth->get_px() * truth->get_px() + truth->get_py() * truth->get_py());
0730 truthpar_pz[truthpar_n] = truth->get_pz();
0731 truthpar_e[truthpar_n] = truth->get_e();
0732 truthpar_phi[truthpar_n] = atan2(truth->get_py(), truth->get_px());
0733 truthpar_eta[truthpar_n] = atanh(truth->get_pz() / sqrt(truth->get_px()*truth->get_px()+truth->get_py()*truth->get_py()+truth->get_pz()*truth->get_pz()));
0734 if (truthpar_eta[truthpar_n] != truthpar_eta[truthpar_n]) truthpar_eta[truthpar_n] = -999;
0735 truthpar_pid[truthpar_n] = truth->get_pid();
0736 truthpar_n++;
0737 if(truthpar_n > 99999)
0738 {
0739 return Fun4AllReturnCodes::EVENT_OK;
0740 }
0741 }
0742 }
0743
0744 if(m_doTracks) {
0745 SvtxTrackMap *trackmap = findNode::getClass<SvtxTrackMap>(topNode, "SvtxTrackMap");
0746
0747 if (!trackmap) {
0748 std::cout << PHWHERE << "SvtxTrackMap node is missing, can't collect tracks" << std::endl;
0749 return Fun4AllReturnCodes::EVENT_OK;
0750 }
0751
0752
0753
0754
0755
0756
0757
0758
0759
0760
0761
0762
0763
0764
0765
0766
0767 m_trkmult = 0;
0768
0769 for(auto entry : *trackmap) {
0770 SvtxTrack *track = entry.second;
0771
0772 m_tr_p[m_trkmult] = track->get_p();
0773 m_tr_pt[m_trkmult] = track->get_pt();
0774 m_tr_eta[m_trkmult] = track->get_eta();
0775 m_tr_phi[m_trkmult] = track->get_phi();
0776
0777 m_tr_charge[m_trkmult] = track->get_charge();
0778 m_tr_chisq[m_trkmult] = track->get_chisq();
0779 m_tr_ndf[m_trkmult] = track->get_ndf();
0780 m_tr_quality[m_trkmult] = track->get_quality();
0781 m_tr_vertex_id[m_trkmult] = track->get_vertex_id();
0782
0783 TrackSeed *silseed = track->get_silicon_seed();
0784 TrackSeed *tpcseed = track->get_tpc_seed();
0785
0786 m_tr_nmaps[m_trkmult] = 0;
0787 m_tr_nintt[m_trkmult] = 0;
0788 m_tr_ntpc[m_trkmult] = 0;
0789
0790 if(tpcseed) {
0791 for (TrackSeed::ConstClusterKeyIter iter = tpcseed->begin_cluster_keys(); iter != tpcseed->end_cluster_keys(); ++iter) {
0792 TrkrDefs::cluskey cluster_key = *iter;
0793 unsigned int layer = TrkrDefs::getLayer(cluster_key);
0794 if (_nlayers_maps > 0 && layer < _nlayers_maps) {
0795 m_tr_nmaps[m_trkmult]++;
0796 }
0797 if (_nlayers_intt > 0 && layer >= _nlayers_maps && layer < _nlayers_maps + _nlayers_intt) {
0798 m_tr_nintt[m_trkmult]++;
0799 }
0800 if (_nlayers_tpc > 0 && layer >= (_nlayers_maps + _nlayers_intt) && layer < (_nlayers_maps + _nlayers_intt + _nlayers_tpc)) {
0801 m_tr_ntpc[m_trkmult]++;
0802 }
0803 }
0804 }
0805
0806 if(silseed) {
0807 for (TrackSeed::ConstClusterKeyIter iter = silseed->begin_cluster_keys(); iter != silseed->end_cluster_keys(); ++iter) {
0808 TrkrDefs::cluskey cluster_key = *iter;
0809 unsigned int layer = TrkrDefs::getLayer(cluster_key);
0810 if (_nlayers_maps > 0 && layer < _nlayers_maps) {
0811 m_tr_nmaps[m_trkmult]++;
0812 }
0813 if (_nlayers_intt > 0 && layer >= _nlayers_maps && layer < _nlayers_maps + _nlayers_intt) {
0814 m_tr_nintt[m_trkmult]++;
0815 }
0816 if (_nlayers_tpc > 0 && layer >= (_nlayers_maps + _nlayers_intt) && layer < (_nlayers_maps + _nlayers_intt + _nlayers_tpc)) {
0817 m_tr_ntpc[m_trkmult]++;
0818 }
0819 }
0820 }
0821
0822
0823 if(track->find_state(m_cemcRadius) != track->end_states()){
0824 m_tr_cemc_eta[m_trkmult] = calculateProjectionEta( track->find_state(m_cemcRadius)->second);
0825 m_tr_cemc_phi[m_trkmult] = calculateProjectionPhi( track->find_state(m_cemcRadius)->second);
0826 }
0827 else{
0828 m_tr_cemc_eta[m_trkmult] = -999;
0829 m_tr_cemc_phi[m_trkmult] = -999;
0830 }
0831
0832
0833 if(track->find_state(m_ihcalRadius) != track->end_states()){
0834 m_tr_ihcal_eta[m_trkmult] = calculateProjectionEta( track->find_state(m_ihcalRadius)->second);
0835 m_tr_ihcal_phi[m_trkmult] = calculateProjectionPhi( track->find_state(m_ihcalRadius)->second);
0836 }
0837 else{
0838 m_tr_ihcal_eta[m_trkmult] = -999;
0839 m_tr_ihcal_phi[m_trkmult] = -999;
0840 }
0841
0842
0843 if(track->find_state(m_ohcalRadius) != track->end_states()){
0844 m_tr_ohcal_eta[m_trkmult] = calculateProjectionEta( track->find_state(m_ohcalRadius)->second);
0845 m_tr_ohcal_phi[m_trkmult] = calculateProjectionPhi( track->find_state(m_ohcalRadius)->second);
0846 }
0847 else{
0848 m_tr_ohcal_eta[m_trkmult] = -999;
0849 m_tr_ohcal_phi[m_trkmult] = -999;
0850 }
0851
0852 if(track->find_state(m_cemcOuterRadius) != track->end_states()){
0853 m_tr_outer_cemc_eta[m_trkmult] = calculateProjectionEta( track->find_state(m_cemcOuterRadius)->second);
0854 m_tr_outer_cemc_phi[m_trkmult] = calculateProjectionPhi( track->find_state(m_cemcOuterRadius)->second);
0855 }
0856 else{
0857 m_tr_outer_cemc_eta[m_trkmult] = -999;
0858 m_tr_outer_cemc_phi[m_trkmult] = -999;
0859 }
0860
0861
0862 if(track->find_state(m_ihcalOuterRadius) != track->end_states()){
0863 m_tr_outer_ihcal_eta[m_trkmult] = calculateProjectionEta( track->find_state(m_ihcalOuterRadius)->second);
0864 m_tr_outer_ihcal_phi[m_trkmult] = calculateProjectionPhi( track->find_state(m_ihcalOuterRadius)->second);
0865 }
0866 else{
0867 m_tr_outer_ihcal_eta[m_trkmult] = -999;
0868 m_tr_outer_ihcal_phi[m_trkmult] = -999;
0869 }
0870
0871
0872 if(track->find_state(m_ohcalOuterRadius) != track->end_states()){
0873 m_tr_outer_ohcal_eta[m_trkmult] = calculateProjectionEta( track->find_state(m_ohcalOuterRadius)->second);
0874 m_tr_outer_ohcal_phi[m_trkmult] = calculateProjectionPhi( track->find_state(m_ohcalOuterRadius)->second);
0875 }
0876 else{
0877 m_tr_outer_ohcal_eta[m_trkmult] = -999;
0878 m_tr_outer_ohcal_phi[m_trkmult] = -999;
0879 }
0880
0881
0882
0883
0884
0885
0886
0887
0888
0889
0890
0891
0892
0893
0894
0895
0896
0897
0898
0899
0900
0901
0902
0903
0904
0905
0906
0907
0908
0909 m_trkmult++;
0910 }
0911
0912
0913
0914
0915
0916
0917
0918
0919
0920
0921
0922
0923
0924
0925 }
0926
0927
0928 m_T->Fill();
0929
0930 return Fun4AllReturnCodes::EVENT_OK;
0931 }
0932
0933
0934 int InclusiveJet::ResetEvent(PHCompositeNode *topNode)
0935 {
0936
0937 m_nComponent.clear();
0938 m_eta.clear();
0939 m_phi.clear();
0940 m_e.clear();
0941 m_pt.clear();
0942
0943 m_jetEmcalE.clear();
0944 m_jetIhcalE.clear();
0945 m_jetOhcalE.clear();
0946
0947 m_truthNComponent.clear();
0948 m_truthEta.clear();
0949 m_truthPhi.clear();
0950 m_truthE.clear();
0951 m_truthPt.clear();
0952 m_truthdR.clear();
0953
0954 m_eta_subseed.clear();
0955 m_phi_subseed.clear();
0956 m_e_subseed.clear();
0957 m_pt_subseed.clear();
0958 m_subseed_cut.clear();
0959
0960 m_eta_rawseed.clear();
0961 m_phi_rawseed.clear();
0962 m_e_rawseed.clear();
0963 m_pt_rawseed.clear();
0964 m_rawseed_cut.clear();
0965
0966 m_triggerVector.clear();
0967
0968 m_zvtx = -9999;
0969 m_emcaln = 0;
0970 m_ihcaln = 0;
0971 m_ohcaln = 0;
0972 m_clsmult = 0;
0973 m_emcal_clsmult = 0;
0974 m_trkmult = 0;
0975
0976 for (int i = 0; i < 24576; i++) {
0977 m_emcale[i] = 0;
0978 m_emcalieta[i] = 0;
0979 m_emcaliphi[i] = 0;
0980 m_emcaleta[i] = 0;
0981 m_emcalphi[i] = 0;
0982 m_emcalchi2[i] = 0;
0983 m_emcalstatus[i] = 0;
0984
0985 }
0986
0987 for (int i = 0; i < 1536; i++) {
0988 m_ihcale[i] = 0;
0989 m_ihcalieta[i] = 0;
0990 m_ihcaliphi[i] = 0;
0991 m_ihcaleta[i] = 0;
0992 m_ihcalphi[i] = 0;
0993 m_ihcalchi2[i] = 0;
0994 m_ihcalstatus[i] = 0;
0995
0996 m_ohcale[i] = 0;
0997 m_ohcalieta[i] = 0;
0998 m_ohcaliphi[i] = 0;
0999 m_ohcaleta[i] = 0;
1000 m_ohcalphi[i] = 0;
1001 m_ohcalchi2[i] = 0;
1002 m_ohcalstatus[i] = 0;
1003
1004 }
1005
1006 for (int i = 0; i < 100000; i++) {
1007 truthpar_pt[i] = 0;
1008 truthpar_pz[i] = 0;
1009 truthpar_e[i] = 0;
1010 truthpar_phi[i] = 0;
1011 truthpar_eta[i] = 0;
1012 truthpar_pid[i] = 0;
1013 }
1014
1015 for (int i = 0; i < 2000; i++) {
1016 m_cluster_e[i] = 0;
1017 m_cluster_eta[i] = 0;
1018 m_cluster_phi[i] = 0;
1019 m_cluster_ntowers[i] = 0;
1020 m_emcal_cluster_e[i] = 0;
1021 m_emcal_cluster_eta[i] = 0;
1022 m_emcal_cluster_phi[i] = 0;
1023 for (int j = 0; j < 500; j++) {
1024 m_cluster_tower_calo[i][j] = 0;
1025 m_cluster_tower_ieta[i][j] = 0;
1026 m_cluster_tower_iphi[i][j] = 0;
1027 m_cluster_tower_e[i][j] = 0;
1028 }
1029 }
1030
1031 for (int i = 0; i < 2000; i++) {
1032 m_tr_p[i] = 0;
1033 m_tr_pt[i] = 0;
1034 m_tr_eta[i] = 0;
1035 m_tr_phi[i] = 0;
1036 m_tr_charge[i] = 0;
1037 m_tr_chisq[i] = 0;
1038 m_tr_ndf[i] = 0;
1039 m_tr_nintt[i] = 0;
1040 m_tr_nmaps[i] = 0;
1041 m_tr_ntpc[i] = 0;
1042 m_tr_quality[i] = 0;
1043 m_tr_vertex_id[i] = 0;
1044 m_tr_cemc_eta[i] = 0;
1045 m_tr_cemc_phi[i] = 0;
1046 m_tr_ihcal_eta[i] = 0;
1047 m_tr_ihcal_phi[i] = 0;
1048 m_tr_ohcal_eta[i] = 0;
1049 m_tr_ohcal_phi[i] = 0;
1050 m_tr_outer_cemc_eta[i] = 0;
1051 m_tr_outer_cemc_phi[i] = 0;
1052 m_tr_outer_ihcal_eta[i] = 0;
1053 m_tr_outer_ihcal_phi[i] = 0;
1054 m_tr_outer_ohcal_eta[i] = 0;
1055 m_tr_outer_ohcal_phi[i] = 0;
1056 }
1057
1058 return Fun4AllReturnCodes::EVENT_OK;
1059 }
1060
1061 float InclusiveJet::calculateProjectionEta(SvtxTrackState* projectedState){
1062 float x = projectedState->get_x();
1063 float y = projectedState->get_y();
1064 float z = projectedState->get_z();
1065
1066 float theta = acos(z / sqrt(x*x + y*y + z*z) );
1067
1068 return -log( tan(theta/2.0) );
1069 }
1070
1071 float InclusiveJet::calculateProjectionPhi(SvtxTrackState* projectedState){
1072 float x = projectedState->get_x();
1073 float y = projectedState->get_y();
1074
1075 return atan2(y,x);
1076 }
1077
1078
1079 int InclusiveJet::EndRun(const int runnumber)
1080 {
1081 std::cout << "InclusiveJet::EndRun(const int runnumber) Ending Run for Run " << runnumber << std::endl;
1082 return Fun4AllReturnCodes::EVENT_OK;
1083 }
1084
1085
1086 int InclusiveJet::End(PHCompositeNode *topNode)
1087 {
1088 std::cout << "InclusiveJet::End - Output to " << m_outputFileName << std::endl;
1089 PHTFileServer::get().cd(m_outputFileName);
1090
1091 m_T->Write();
1092 std::cout << "InclusiveJet::End(PHCompositeNode *topNode) This is the End..." << std::endl;
1093 return Fun4AllReturnCodes::EVENT_OK;
1094 }
1095
1096
1097 int InclusiveJet::Reset(PHCompositeNode *topNode)
1098 {
1099 std::cout << "InclusiveJet::Reset(PHCompositeNode *topNode) being Reset" << std::endl;
1100 return Fun4AllReturnCodes::EVENT_OK;
1101 }
1102
1103
1104 void InclusiveJet::Print(const std::string &what) const
1105 {
1106 std::cout << "InclusiveJet::Print(const std::string &what) const Printing info for " << what << std::endl;
1107 }