File indexing completed on 2025-08-03 08:15:56
0001 #include <TreeMaker.h>
0002
0003 #include <phool/getClass.h>
0004 #include <phool/PHCompositeNode.h>
0005
0006
0007 #include <calobase/RawTower.h>
0008 #include <calobase/RawTowerContainer.h>
0009 #include <calobase/RawTowerGeom.h>
0010 #include <calobase/RawTowerGeomContainer.h>
0011
0012
0013 #include <calobase/RawCluster.h>
0014 #include <calobase/RawClusterv1.h>
0015 #include <calobase/RawClusterContainer.h>
0016
0017
0018 #include <fastjet/ClusterSequence.hh>
0019
0020
0021 #include <TLorentzVector.h>
0022
0023 using std::cout;
0024 using std::endl;
0025 using std::vector;
0026
0027 using fastjet::PseudoJet;
0028 using fastjet::ClusterSequence;
0029 using fastjet::JetDefinition;
0030 using fastjet::antikt_algorithm;
0031
0032
0033
0034 int TreeMaker::UseFastJet(PHCompositeNode *topNode)
0035 {
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052 RawClusterContainer* cemc_clusters = findNode::getClass<RawClusterContainer>(topNode,"CLUSTER_CEMC");
0053 RawClusterContainer* hcalin_clusters = findNode::getClass<RawClusterContainer>(topNode,"CLUSTER_HCALIN");
0054 RawClusterContainer* hcalout_clusters = findNode::getClass<RawClusterContainer>(topNode,"CLUSTER_HCALOUT");
0055
0056 if ( verbosity > 3 )
0057 {
0058 cout << "cemc_clusters " << cemc_clusters << endl;
0059 cout << "hcalin_clusters " << hcalin_clusters << endl;
0060 cout << "hcalout_clusters " << hcalout_clusters << endl;
0061 }
0062
0063
0064 RawClusterContainer* new_cemc_clusters = findNode::getClass<RawClusterContainer>(topNode,"CLUSTER_CEMC_MOD");
0065 RawClusterContainer* new_hcalin_clusters = findNode::getClass<RawClusterContainer>(topNode,"CLUSTER_HCALIN_MOD");
0066 RawClusterContainer* new_hcalout_clusters = findNode::getClass<RawClusterContainer>(topNode,"CLUSTER_HCALOUT_MOD");
0067
0068 if ( verbosity > 3 )
0069 {
0070 cout << "new_cemc_clusters " << new_cemc_clusters << endl;
0071 cout << "new_hcalin_clusters " << new_hcalin_clusters << endl;
0072 cout << "new_hcalout_clusters " << new_hcalout_clusters << endl;
0073 }
0074
0075 vector<PseudoJet> clusters;
0076 vector<PseudoJet> mod_clusters;
0077 double R = 0.4;
0078 JetDefinition jet_def(antikt_algorithm, R);
0079
0080
0081
0082
0083 int cluster_counter = 0;
0084 RawClusterContainer::Range cemc_range = cemc_clusters->getClusters();
0085 for ( RawClusterContainer::Iterator cemc_iter = cemc_range.first; cemc_iter != cemc_range.second; ++cemc_iter )
0086 {
0087
0088 RawCluster* cluster = cemc_iter->second;
0089 double e = cluster->get_energy();
0090 double phi = cluster->get_phi();
0091 double r = cluster->get_r();
0092 double z = cluster->get_z();
0093 double eta = -log(tan(atan2(r,z)/2.0));
0094 double pt = e/cosh(eta);
0095 TLorentzVector tlv_cluster;
0096 tlv_cluster.SetPtEtaPhiE(pt,eta,phi,e);
0097 clusters.push_back(PseudoJet(tlv_cluster));
0098 ++cluster_counter;
0099 }
0100 ClusterSequence cs_cluster(clusters, jet_def);
0101 vector<PseudoJet> clusterjets = sorted_by_pt(cs_cluster.inclusive_jets());
0102 if ( verbosity > 1 ) cout << "number of clusters " << cluster_counter << " number of cluster jets" << clusterjets.size() << endl;
0103
0104
0105 int mod_cluster_counter = 0;
0106 RawClusterContainer::Range new_cemc_range = new_cemc_clusters->getClusters();
0107 for ( RawClusterContainer::Iterator new_cemc_iter = new_cemc_range.first; new_cemc_iter != new_cemc_range.second; ++new_cemc_iter )
0108 {
0109
0110 RawCluster* cluster = new_cemc_iter->second;
0111 double e = cluster->get_energy();
0112 double phi = cluster->get_phi();
0113 double r = cluster->get_r();
0114 double z = cluster->get_z();
0115 double eta = -log(tan(atan2(r,z)/2.0));
0116 double pt = e/cosh(eta);
0117 TLorentzVector tlv_cluster;
0118 tlv_cluster.SetPtEtaPhiE(pt,eta,phi,e);
0119 mod_clusters.push_back(PseudoJet(tlv_cluster));
0120 ++mod_cluster_counter;
0121 }
0122 ClusterSequence cs_mod_cluster(mod_clusters, jet_def);
0123 vector<PseudoJet> mod_clusterjets = sorted_by_pt(cs_mod_cluster.inclusive_jets());
0124 if ( verbosity > 1 ) cout << "number of clusters " << cluster_counter << " number of cluster jets" << mod_clusterjets.size() << endl;
0125
0126
0127
0128
0129
0130
0131
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147 return 0;
0148
0149 }