File indexing completed on 2025-08-05 08:13:24
0001 #ifndef TRACKANDCLUSTERMATCHINGQA_H__
0002 #define TRACKANDCLUSTERMATCHINGQA_H__
0003
0004 #include <fun4all/SubsysReco.h>
0005
0006 #include <calobase/RawCluster.h>
0007 #include <calobase/RawClusterContainer.h>
0008 #include <calobase/RawClusterUtility.h>
0009 #include <calobase/RawTower.h>
0010 #include <calobase/RawTowerContainer.h>
0011 #include <calobase/RawTowerGeom.h>
0012 #include <calobase/RawTowerGeomContainer.h>
0013 #include <calotrigger/CaloTriggerInfo.h>
0014
0015 #include <vector>
0016
0017
0018 class Fun4AllHistoManager;
0019 class PHCompositeNode;
0020 class TFile;
0021 class TH1;
0022 class TH2;
0023 class PHCompositeNode;
0024 class RawClusterContainer;
0025 class RawCluster;
0026 class SvtxTrackMap;
0027 class GlobalVertex;
0028 class PHHepMCGenEventMap;
0029 class JetRecoEval;
0030 class SvtxTrackEval;
0031 class PHG4TruthInfoContainer;
0032 class PHHepMCGenEvent;
0033 class SvtxTrack;
0034 class PHG4Particle;
0035
0036
0037 class TrackAndClusterMatchingQA : public SubsysReco
0038 {
0039 public:
0040
0041
0042 TrackAndClusterMatchingQA(const std::string &name = "TrackAndClusterMatchingQA",
0043 const std::string &fname = "TrackAndClusterMatchingQA.root");
0044
0045
0046 virtual ~TrackAndClusterMatchingQA();
0047
0048
0049 int Init(PHCompositeNode *);
0050
0051
0052 int process_event(PHCompositeNode *);
0053
0054
0055 int End(PHCompositeNode *);
0056
0057 void set_EM_clustersName(const std::string &name) { _em_clusters_name = name; }
0058 std::string get_EM_clustersName() { return _em_clusters_name; }
0059
0060 void set_EM_retoweredTowersName(const std::string &name) { _em_retowered_towers_name = name; }
0061 std::string get_EM_retoweredTowersName() { return _em_retowered_towers_name; }
0062
0063 void set_ApplyTowerSelection(bool b) { _apply_tower_selection = b; }
0064 bool get_ApplyTowerSelection() { return _apply_tower_selection; }
0065
0066 void set_TrackMinPt(float f) { _track_min_pt = f; }
0067 float get_TrackMinPt() { return _track_min_pt; }
0068
0069 void set_TrackQuality(float f) { _track_quality = f; }
0070 float get_TrackQuality() { return _track_quality; }
0071
0072 void set_TrackMaxDCAxy(float f) { _track_max_dcaxy = f; }
0073 float get_TrackMaxDCAxy() { return _track_max_dcaxy; }
0074
0075 void set_TrackMaxDCAz(float f) { _track_max_dcaz = f; }
0076 float get_TrackMaxDCAz() { return _track_max_dcaz; }
0077
0078 void set_TrackMinTPCHits(int d) { _track_min_tpc_hits = d; }
0079 int get_TrackMinTPCHits() { return _track_min_tpc_hits; }
0080
0081 void set_TrackMinSiliconHits(int d) { _track_min_silicon_hits = d; }
0082 int get_TrackMinSiliconHits() { return _track_min_silicon_hits; }
0083
0084 void set_UseOriginWhenNoVertex(bool b) { _use_origin_when_no_vertex = b; }
0085
0086 float GetDeltaR(float track_phi, float cluster_phi, float track_eta, float cluster_eta);
0087
0088 bool IsAcceptableTrack(SvtxTrack *track, GlobalVertex *vtx);
0089
0090 private:
0091
0092 std::string _outfilename;
0093
0094 SvtxTrackMap *_track_map;
0095 RawClusterContainer *_em_clusters;
0096 std::string _em_clusters_name = "";
0097 std::string _em_retowered_towers_name = "";
0098 bool _apply_tower_selection = true;
0099 bool _use_origin_when_no_vertex = false;
0100
0101
0102 float _track_min_pt = 0.5;
0103 float _track_quality = 6.;
0104 float _track_max_dcaxy = 0.02;
0105 float _track_max_dcaz = 0.01;
0106 int _track_min_tpc_hits = 20;
0107 int _track_min_silicon_hits = 4;
0108
0109
0110 const unsigned int _nlayers_maps = 3;
0111 const unsigned int _nlayers_intt = 4;
0112 const unsigned int _nlayers_tpc = 48;
0113
0114
0115 TH2 *_h2trackPt_vs_clusterEt;
0116 TH1 *_h1EMCal_TowerEnergy;
0117 TH1 *_h1EMCal_TowerEnergy_Retowered;
0118 TH1 *_h1HCalIN_TowerEnergy;
0119 TH1 *_h1HCalOUT_TowerEnergy;
0120 TH1 *_h1EMCal_TowerEnergy_afterSelection;
0121 TH1 *_h1EMCal_TowerEnergy_Retowered_afterSelection;
0122 TH1 *_h1HCalIN_TowerEnergy_afterSelection;
0123 TH1 *_h1HCalOUT_TowerEnergy_afterSelection;
0124 TH2 *_h2TowerEnergy_EMCal_vs_HCalIN;
0125 TH2 *_h2TowerEnergy_EMCal_vs_HCalOUT;
0126 TH2 *_h2TowerEnergy_HCalIN_vs_HCalOUT;
0127 TH1 *_h1EMCal_RetowerEnergyFraction;
0128
0129 TH1 *_h1Track_Quality;
0130 TH1 *_h1Track_DCAxy;
0131 TH1 *_h1Track_DCAz;
0132 TH1 *_h1Track_TPC_Hits;
0133 TH1 *_h1Track_Silicon_Hits;
0134 TH1 *_h1Track_Pt_beforeSelections;
0135 TH1 *_h1Track_Pt_afterSelections;
0136
0137 TH1 *_h1Track_TPC_Hits_Selected;
0138 TH2 *_h2Track_TPC_Hits_vs_Phi;
0139 TH2 *_h2Track_TPC_Hits_vs_Eta;
0140 TH2 *_h2Track_TPC_Hits_vs_Pt;
0141
0142 TH1 *_h1deta;
0143 TH1 *_h1dphi;
0144 TH1 *_h2phi_vs_deta;
0145 TH1 *_h1min_dR;
0146
0147
0148
0149
0150 TFile *_outfile;
0151
0152
0153
0154
0155
0156
0157
0158 };
0159
0160 #endif