Back to home page

sPhenix code displayed by LXR

 
 

    


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 /// Class declarations for use in the analysis module
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 /// Definition of this analysis module class
0037 class TrackAndClusterMatchingQA : public SubsysReco
0038 {
0039  public:
0040 
0041   /// Constructor
0042   TrackAndClusterMatchingQA(const std::string &name = "TrackAndClusterMatchingQA",
0043               const std::string &fname = "TrackAndClusterMatchingQA.root");
0044 
0045   // Destructor
0046   virtual ~TrackAndClusterMatchingQA();
0047 
0048   /// SubsysReco initialize processing method
0049   int Init(PHCompositeNode *);
0050 
0051   /// SubsysReco event processing method
0052   int process_event(PHCompositeNode *);
0053 
0054   /// SubsysReco end processing method
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   /// String to contain the outfile name containing the trees
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   //Track selection
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   //Some track constants
0110   const unsigned int _nlayers_maps = 3;
0111   const unsigned int _nlayers_intt = 4;
0112   const unsigned int _nlayers_tpc = 48;
0113 
0114   /// Fun4All Histogram Manager tool
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   /// TFile to hold the following TTrees and histograms
0150   TFile *_outfile;
0151 
0152 
0153   /**
0154    * Make variables for the relevant trees
0155    */
0156 
0157 
0158 };
0159 
0160 #endif