diff --git a/ClusterShapeAnalysis/ClusterHists.h b/ClusterShapeAnalysis/ClusterHists.h index 05decc8..6e3f1e4 100644 --- a/ClusterShapeAnalysis/ClusterHists.h +++ b/ClusterShapeAnalysis/ClusterHists.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include @@ -8,6 +9,7 @@ namespace EVENT { class TrackerHit; + class SimTrackerHit; } //! Histograms for cluster analysis @@ -22,6 +24,7 @@ class ClusterHists // Fill histograms with a single track hit void fill(const EVENT::TrackerHit* trkhit); + void fill(const EVENT::SimTrackerHit* simtrkhit); TH1* h_cluster_edep_BX; @@ -115,4 +118,88 @@ class ClusterHists TH2* h_z_r_vx; TH2* h_x_y_vx; + //time and edep cut for all layers -- juliet + TH1* h_cluster_edep_Tcut; + TH1* h_cluster_edep_Tcut_layer0; + TH1* h_cluster_edep_Tcut_layer1; + TH1* h_cluster_edep_Tcut_layer2; + TH1* h_cluster_edep_Tcut_layer3; + TH1* h_cluster_edep_Tcut_layer4; + TH1* h_cluster_edep_Tcut_layer5; + TH1* h_cluster_edep_Tcut_layer6; + TH1* h_cluster_edep_Tcut_layer7; + TH1* h_cluster_edep_Tcut_layer8; + + TH1* h_trackerhit_time_Tcut; + TH1* h_trackerhit_time_Tcut_layer0; + TH1* h_trackerhit_time_Tcut_layer1; + TH1* h_trackerhit_time_Tcut_layer2; + TH1* h_trackerhit_time_Tcut_layer3; + TH1* h_trackerhit_time_Tcut_layer4; + TH1* h_trackerhit_time_Tcut_layer5; + TH1* h_trackerhit_time_Tcut_layer6; + TH1* h_trackerhit_time_Tcut_layer7; + + //time and edep for 1st layer -- juliet + TH1* h_cluster_edep_layer0; + TH1* h_cluster_edep_layer1; + TH1* h_cluster_edep_layer2; + TH1* h_cluster_edep_layer3; + TH1* h_cluster_edep_layer4; + TH1* h_cluster_edep_layer5; + TH1* h_cluster_edep_layer6; + TH1* h_cluster_edep_layer7; + TH1* h_cluster_edep_layer8; + +//hit energy depo per layer + TH1* h_hit_edep_layer0; + TH1* h_hit_edep_layer1; + TH1* h_hit_edep_layer2; + TH1* h_hit_edep_layer3; + TH1* h_hit_edep_layer4; + TH1* h_hit_edep_layer5; + TH1* h_hit_edep_layer6; + TH1* h_hit_edep_layer7; + TH1* h_hit_edep_layer8; +//time of arriver per layer + TH1* h_trackerhit_time; + TH1* h_trackerhit_time_layer0; + TH1* h_trackerhit_time_layer1; + TH1* h_trackerhit_time_layer2; + TH1* h_trackerhit_time_layer3; + TH1* h_trackerhit_time_layer4; + TH1* h_trackerhit_time_layer5; + TH1* h_trackerhit_time_layer6; + TH1* h_trackerhit_time_layer7; + TH1* h_trackerhit_time_layer8; + //hits per cluster per layer: + TH1* h_thclen; + TH1* h_thclen_layer0; + TH1* h_thclen_layer1; + TH1* h_thclen_layer2; + TH1* h_thclen_layer3; + TH1* h_thclen_layer4; + TH1* h_thclen_layer5; + TH1* h_thclen_layer6; + TH1* h_thclen_layer7; + TH1* h_thclen_layer8; + //hits per cluster per layer cut: + TH1* h_thclen_cut; + TH1* h_thclen_layer0_cut; + TH1* h_thclen_layer1_cut; + TH1* h_thclen_layer2_cut; + TH1* h_thclen_layer3_cut; + TH1* h_thclen_layer4_cut; + TH1* h_thclen_layer5_cut; + TH1* h_thclen_layer6_cut; + TH1* h_thclen_layer7_cut; + TH1* h_thclen_layer8_cut; + //2D + TH2* h_toa_edepCluster; + TH2* h_cluster_edep_thlen; + TH2* h_cluster_edep_thlen_cut; + //3D Histos: + TH3* h_3DPosition_digi; + TH3* h_3DPosition_cdigi; + }; diff --git a/src/ClusterHists.cc b/src/ClusterHists.cc index 9421e25..bc8b1a7 100644 --- a/src/ClusterHists.cc +++ b/src/ClusterHists.cc @@ -1,5 +1,6 @@ #include "ClusterShapeAnalysis/ClusterHists.h" #include "marlin/VerbosityLevels.h" +#include #include #include @@ -7,9 +8,34 @@ #include #include +#include +#include + +#include "DD4hep/Detector.h" +#include "DD4hep/DD4hepUnits.h" +#include "/global/cfs/cdirs/atlas/juliet/work/TrkHitsStudiesWorkspace/packages/MarlinTrkProcessors/source/Utils/include/FilterTimeHits.h" + +#include +#include +#include + +using namespace lcio; +using namespace marlin; +using namespace std; + ClusterHists::ClusterHists() { + + //Calculate the MPV scaling + float mpv = 19e-6; //GeV + float edp_rangeMax = 10 * mpv; //GeV + //float edp_binWidth = 20e-7; //[GeV] = 2000eV, each bin has a width of 2000 eV + float edp_binNum = 200; //edp_rangeMax/edp_binWidth; //bin number will be the same for electrons and GeV units + //3.7 eV = 1 e, ou, 3.7e-9 GeV = 1e + float edp_rangeMax_e = 2 * mpv / (3.7e-9); //range in electrons + float edp_binNum_e = 5000; //10*edp_binNum; + h_size_theta_y = new TH2F("cluster_size_vs_theta_y" , ";Cluster #theta; Cluster size" , 100, 0, 3.14, 31, -0.5, 30.5 ); h_size_theta_x = new TH2F("cluster_size_vs_theta_x" , ";Cluster #theta; Cluster size" , 100, 0, 3.14, 31, -0.5, 30.5 ); h_size_theta_tot = new TH2F("cluster_size_vs_theta_tot" , ";Cluster #theta; Cluster size" , 100, 0, 3.14, 31, -0.5, 30.5 ); @@ -53,14 +79,21 @@ ClusterHists::ClusterHists() h_clusters_by_layer = new TH1F("numClusters_by_layer" , ";Layer Index; Number of Clusters",8,0,8); h_hits_by_layer = new TH1F("numhits_by_layer" , ";Layer Index; Number of Hits",8,0,8); h_theta = new TH1F("theta" , ";Theta;Number of Clusters" ,100,0,3.15); - h_cluster_edep = new TH1F("Clusters_edep" , ";Energy Deposited (GeV);Clusters" ,100,0,0.0005); + + h_cluster_edep = new TH1F("Clusters_edep" , ";Energy Deposited (GeV);Clusters" ,edp_binNum,0,edp_rangeMax); + h_hit_edep = new TH1F("Hits_edep" , ";Deposited charge (electrons);Hits" ,edp_binNum_e,0,edp_rangeMax_e);//5000, 0, 50000 Change JULIET + h_toa_edepCluster = new TH2F("toa_vs_edepCluster", "; Time of Arrival [ns];Energy Deposited [GeV]", 100, 0, 10, 100, 0, 0.0005); //--JULIET + + // Create position histograms for tracker hits + int numbins_all = 1000; //change this for 10 mm bins + //h_cluster_edep = new TH1F("Clusters_edep" , ";Energy Deposited (GeV);Clusters" ,100,0,0.0005); h_cluster_edep_BX = new TH1F("Clusters_edep_BX" , ";Energy Deposited (GeV);Clusters/BX" ,100,0,0.0005); - h_hit_edep = new TH1F("Hits_edep" , ";Deposited charge (electrons);Hits" ,5000,0,50000); + //h_hit_edep = new TH1F("Hits_edep" , ";Deposited charge (electrons);Hits" ,5000,0,50000); h_edep_r = new TH2F("edep_vs_r" , ";Cluster R (x^2+y^2)^(1/2) (mm); Energy Deposited (GeV)" , 100, 20, 120, 100, 0, 0.002 ); h_edep_cluster = new TH2F("edep_vs_cluster_size" , "; Energy Deposited (GeV); Total Cluster Size" ,100, 0, 0.002, 100, -0.5, 99.5 ); h_avgHits = new TH1F("nHitsperCluster", ";Number of Hits / Cluster; Clusters",20,0,20); h_sysID = new TH1F("systemID", ";System ID; Number of Clusters",20,0,20); - h_cluster_timing = new TH1F("cluster_timing", "Time of arrival of clusters [ns]", 200, -1, 1); + h_cluster_timing = new TH1F("cluster_timing", "Time of arrival of clusters [ns]", 2000, -1, 1); h_hit_timing = new TH1F("hit_timing", "Time of arrival of hits [ns]", 200, -1, 1); // Create position histograms for tracker hits @@ -110,19 +143,119 @@ ClusterHists::ClusterHists() h_r_vx = new TH1F("r_vx " , ";r ; Num Hits" , numbins_vx, rmin_vx, rmax_vx); h_z_r_vx = new TH2F("z_r_vx" , ";z_r ; r" , numbins_vx/10, zmin_vx, zmax_vx, numbins_vx/10, rmin_vx, rmax_vx); h_x_y_vx = new TH2F("x_y_vx" , ";x_y ; r" , numbins_vx, -rmax_vx, rmax_vx, numbins_vx, -rmax_vx, rmax_vx); + + //create histograms for 1st layer in full silicon tracking detector: EDEP & Time + h_cluster_edep_layer0 = new TH1F("Clusters_edep_layer0", ";Energy Deposited (GeV);Clusters" ,edp_binNum,0,edp_rangeMax); + h_cluster_edep_layer1 = new TH1F("Clusters_edep_layer1", ";Energy Deposited (GeV);Clusters" ,edp_binNum,0,edp_rangeMax); + h_cluster_edep_layer2 = new TH1F("Clusters_edep_layer2", ";Energy Deposited (GeV);Clusters" ,edp_binNum,0,edp_rangeMax); + h_cluster_edep_layer3 = new TH1F("Clusters_edep_layer3", ";Energy Deposited (GeV);Clusters" ,edp_binNum,0,edp_rangeMax); + h_cluster_edep_layer4 = new TH1F("Clusters_edep_layer4", ";Energy Deposited (GeV);Clusters" ,edp_binNum,0,edp_rangeMax); + h_cluster_edep_layer5 = new TH1F("Clusters_edep_layer5", ";Energy Deposited (GeV);Clusters" ,edp_binNum,0,edp_rangeMax); + h_cluster_edep_layer6 = new TH1F("Clusters_edep_layer6", ";Energy Deposited (GeV);Clusters" ,edp_binNum,0,edp_rangeMax); + h_cluster_edep_layer7 = new TH1F("Clusters_edep_layer7", ";Energy Deposited (GeV);Clusters" ,edp_binNum,0,edp_rangeMax); + h_cluster_edep_layer8 = new TH1F("Clusters_edep_layer8", ";Energy Deposited (GeV);Clusters" ,edp_binNum,0,edp_rangeMax); + + //time-energy cluster cut: + // h_cluster_edep_Tcut = new TH1F("Clusters_edep_Tcut", ";Energy Deposited (GeV);Clusters" ,200,0,0.0005); + // h_cluster_edep_Tcut_layer0 = new TH1F("Clusters_edep_Tcut_layer0", ";Energy Deposited (GeV);Clusters" ,200,0,0.0005); + // h_cluster_edep_Tcut_layer1 = new TH1F("Clusters_edep_Tcut_layer1", ";Energy Deposited (GeV);Clusters" ,200,0,0.0005); + // h_cluster_edep_Tcut_layer2 = new TH1F("Clusters_edep_Tcut_layer2", ";Energy Deposited (GeV);Clusters" ,200,0,0.0005); + // h_cluster_edep_Tcut_layer3 = new TH1F("Clusters_edep_Tcut_layer3", ";Energy Deposited (GeV);Clusters" ,200,0,0.0005); + // h_cluster_edep_Tcut_layer4 = new TH1F("Clusters_edep_Tcut_layer4", ";Energy Deposited (GeV);Clusters" ,200,0,0.0005); + // h_cluster_edep_Tcut_layer5 = new TH1F("Clusters_edep_Tcut_layer5", ";Energy Deposited (GeV);Clusters" ,200,0,0.0005); + // h_cluster_edep_Tcut_layer6 = new TH1F("Clusters_edep_Tcut_layer6", ";Energy Deposited (GeV);Clusters" ,200,0,0.0005); + // h_cluster_edep_Tcut_layer7 = new TH1F("Clusters_edep_Tcut_layer7", ";Energy Deposited (GeV);Clusters" ,200,0,0.0005); + + // h_trackerhit_time_Tcut = new TH1F("trackerhit_time_Tcut", ";Time (ns);Events" ,800,-1,20); + // h_trackerhit_time_Tcut_layer0 = new TH1F("trackerhit_time_Tcut_layer0", ";Time (ns);Events" ,800,-1,20); + // h_trackerhit_time_Tcut_layer1 = new TH1F("trackerhit_time_Tcut_layer1", ";Time (ns);Events" ,800,-1,20); + // h_trackerhit_time_Tcut_layer2 = new TH1F("trackerhit_time_Tcut_layer2", ";Time (ns);Events" ,800,-1,20); + // h_trackerhit_time_Tcut_layer3 = new TH1F("trackerhit_time_Tcut_layer3", ";Time (ns);Events" ,800,-1,20); + // h_trackerhit_time_Tcut_layer4 = new TH1F("trackerhit_time_Tcut_layer4", ";Time (ns);Events" ,800,-1,20); + // h_trackerhit_time_Tcut_layer5 = new TH1F("trackerhit_time_Tcut_layer5", ";Time (ns);Events" ,800,-1,20); + // h_trackerhit_time_Tcut_layer6 = new TH1F("trackerhit_time_Tcut_layer6", ";Time (ns);Events" ,800,-1,20); + // h_trackerhit_time_Tcut_layer7 = new TH1F("trackerhit_time_Tcut_layer7", ";Time (ns);Events" ,800,-1,20); + + h_hit_edep_layer0 = new TH1F("hit_edep_layer0", ";Deposited charge (electrons);Hits" ,edp_binNum_e,0,edp_rangeMax_e); //5000, 0, 50000); + h_hit_edep_layer1 = new TH1F("hit_edep_layer1", ";Deposited charge (electrons);Hits" ,edp_binNum_e,0,edp_rangeMax_e); + h_hit_edep_layer2 = new TH1F("hit_edep_layer2", ";Deposited charge (electrons);Hits" ,edp_binNum_e,0,edp_rangeMax_e); + h_hit_edep_layer3 = new TH1F("hit_edep_layer3", ";Deposited charge (electrons);Hits" ,edp_binNum_e,0,edp_rangeMax_e); + h_hit_edep_layer4 = new TH1F("hit_edep_layer4", ";Deposited charge (electrons);Hits" ,edp_binNum_e,0,edp_rangeMax_e); + h_hit_edep_layer5 = new TH1F("hit_edep_layer5", ";Deposited charge (electrons);Hits" ,edp_binNum_e,0,edp_rangeMax_e); + h_hit_edep_layer6 = new TH1F("hit_edep_layer6", ";Deposited charge (electrons);Hits" ,edp_binNum_e,0,edp_rangeMax_e); //(100, 0, 36000) + h_hit_edep_layer7 = new TH1F("hit_edep_layer7", ";Deposited charge (electrons);Hits" ,edp_binNum_e,0,edp_rangeMax_e);//5000,0,50000 + h_hit_edep_layer8 = new TH1F("hit_edep_layer8", ";Deposited charge (electrons);Hits" ,edp_binNum_e,0,edp_rangeMax_e);//5000,0,50000 + + h_trackerhit_time = new TH1F("trackerhit_time", ";Time (ns);Events" ,2000,-0.1,10); //-0.2 - 0.5 + h_trackerhit_time_layer0 = new TH1F("trackerhit_time_layer0", ";Time (ns);Events" ,2000,-0.1,10); //,200000,0,20 + h_trackerhit_time_layer1 = new TH1F("trackerhit_time_layer1", ";Time (ns);Events" ,2000,-0.1,10); + h_trackerhit_time_layer2 = new TH1F("trackerhit_time_layer2", ";Time (ns);Events" ,2000,-0.1,10); + h_trackerhit_time_layer3 = new TH1F("trackerhit_time_layer3", ";Time (ns);Events" ,2000,-0.1,10); + h_trackerhit_time_layer4 = new TH1F("trackerhit_time_layer4", ";Time (ns);Events" ,2000,-0.1,10); + h_trackerhit_time_layer5 = new TH1F("trackerhit_time_layer5", ";Time (ns);Events" ,2000,-0.1,10); + h_trackerhit_time_layer6 = new TH1F("trackerhit_time_layer6", ";Time (ns);Events" ,2000,-0.1,10); + h_trackerhit_time_layer7 = new TH1F("trackerhit_time_layer7", ";Time (ns);Events" ,2000,-0.1,10); + h_trackerhit_time_layer8 = new TH1F("trackerhit_time_layer8", ";Time (ns);Events" ,2000,-0.1,10); + + //number of hits per cluster + h_thclen = new TH1F("thclen", ";Number of Hit Constituents; Events", 50, 0, 50); //Total number of hit constituents + //number of hits per cluster per layer: + h_thclen_layer0 = new TH1F("thclen_layer0", ";Number of Hit Constituents; Events", 50, 0, 50); + h_thclen_layer1 = new TH1F("thclen_layer1", ";Number of Hit Constituents; Events", 50, 0, 50); + h_thclen_layer2 = new TH1F("thclen_layer2", ";Number of Hit Constituents; Events", 50, 0, 50); + h_thclen_layer3 = new TH1F("thclen_layer3", ";Number of Hit Constituents; Events", 50, 0, 50); + h_thclen_layer4 = new TH1F("thclen_layer4", ";Number of Hit Constituents; Events", 50, 0, 50); + h_thclen_layer5 = new TH1F("thclen_layer5", ";Number of Hit Constituents; Events", 50, 0, 50); + h_thclen_layer6 = new TH1F("thclen_layer6", ";Number of Hit Constituents; Events", 50, 0, 50); + h_thclen_layer7 = new TH1F("thclen_layer7", ";Number of Hit Constituents; Events", 50, 0, 50); + h_thclen_layer8 = new TH1F("thclen_layer8", ";Number of Hit Constituents; Events", 50, 0, 50); + + //number of hits per cluster for hit clusters > 15: + h_thclen_cut = new TH1F("thclen_cut", ";Number of Hit Constituents; Events", 200, 15, 215); //Total number of hit constituents + //number of hits per cluster per layer: + h_thclen_layer0_cut = new TH1F("thclen_layer0_cut", ";Number of Hit Constituents; Events", 200, 15, 215); + h_thclen_layer1_cut = new TH1F("thclen_layer1_cut", ";Number of Hit Constituents; Events", 200, 15, 215); + h_thclen_layer2_cut = new TH1F("thclen_layer2_cut", ";Number of Hit Constituents; Events", 200, 15, 215); + h_thclen_layer3_cut = new TH1F("thclen_layer3_cut", ";Number of Hit Constituents; Events", 200, 15, 215); + h_thclen_layer4_cut = new TH1F("thclen_layer4_cut", ";Number of Hit Constituents; Events", 200, 15, 215); + h_thclen_layer5_cut = new TH1F("thclen_layer5_cut", ";Number of Hit Constituents; Events", 200, 15, 215); + h_thclen_layer6_cut = new TH1F("thclen_layer6_cut", ";Number of Hit Constituents; Events", 200, 15, 215); + h_thclen_layer7_cut = new TH1F("thclen_layer7_cut", ";Number of Hit Constituents; Events", 200, 15, 215); + h_thclen_layer8_cut = new TH1F("thclen_layer8_cut", ";Number of Hit Constituents; Events", 200, 15, 215); + + //2D histogram for all detector layers for Cluster Edep vs Number of Hits per Cluster: + h_cluster_edep_thlen = new TH2F("edep_vs_hitNum" , ";Hits/Cluster; Energy Deposited (GeV)" , 100, 0, 100, edp_binNum,0,edp_rangeMax); + h_cluster_edep_thlen_cut = new TH2F("edep_vs_hitNum_cut" , ";Hits/Cluster; Energy Deposited (GeV)" , 200, 15, 215, edp_binNum,0,edp_rangeMax); + +//3D HISTO for X vs Y vs Z position in digitized and truth +h_3DPosition_digi = new TH3F("3DPosition_digi", "3D Digitized Position;x[mm];y[mm];z[mm]", 100, 0, 1600, 100, 0, 1600, 100, -2500, 2500); +h_3DPosition_cdigi = new TH3D ("3DPosition_cdigi", "3D Digitized Position;#theta;r[mm];z[mm]", numbins_all/10, 0, 3.14, numbins_all/10, -rmax_all, rmax_all, numbins_all/10, zmin_all, zmax_all); + } void ClusterHists::fill(const EVENT::TrackerHit* trkhit) { - //Calculate energy deposited + //Calculate energy deposited float EDep = trkhit->getEDep(); + float toa = trkhit->getTime(); //time of arrival -- Juliet + // Correcting for the propagation time + dd4hep::rec::Vector3D pos = trkhit->getPosition(); + double hitR = pos.r(); + double m_beta = 1.0; + // double tmin = -0.09;//-90.0; //ns - get min and max from the config file + // double tmax = 0.15; //90.0; //ns + double dt = hitR / (TMath::C() * m_beta / 1e6); + toa -= dt; + + //Calculating theta float x = trkhit->getPosition()[0]; float y = trkhit->getPosition()[1]; float z = trkhit->getPosition()[2]; float r = sqrt(pow(x,2)+pow(y,2)); float incidentTheta = std::atan(r/z); + float theta_min = std::atan(r/z); if(incidentTheta<0) incidentTheta += M_PI; @@ -142,6 +275,7 @@ void ClusterHists::fill(const EVENT::TrackerHit* trkhit) for (size_t j=0; j( rawHits[j] ); + //lcio::TrackerHit *hitTracker = dynamic_cast( rawHits[j] ); h_hit_edep->Fill(hitConstituent->getEDep()); h_hit_timing -> Fill(hitConstituent->getTime()); const double *localPos = hitConstituent->getPosition(); @@ -199,6 +333,7 @@ void ClusterHists::fill(const EVENT::TrackerHit* trkhit) h_theta->Fill(incidentTheta); h_cluster_pos->Fill(z,r); h_clusters_by_layer->Fill(layerID); + h_trackerhit_time->Fill(toa); //if (toa > tmin && toa < tmax) h_trackerhit_time->Fill(toa); h_avgHits->Fill(cluster_size_tot); // tracker hit hists @@ -209,12 +344,48 @@ void ClusterHists::fill(const EVENT::TrackerHit* trkhit) h_z_r->Fill(z,r); h_x_y->Fill(x,y); for (size_t j=0; j( rawHits[j] ); // adding this -- Juliet + //lcio::TrackerHit *hitTracker = dynamic_cast( rawHits[j] ); + + //skip events out of the time range -> Correcting for the propagation time + // if (toa < tmin || toa > tmax){ + // continue; + // } + + //hits/cluster cut: + if(rawHits.size() > 15){ + h_thclen_cut->Fill(rawHits.size()); + h_cluster_edep_thlen_cut->Fill(rawHits.size(), EDep); + } + h_cluster_edep_thlen->Fill(rawHits.size(), EDep); + h_hits_by_layer->Fill(layerID); h_z_r_hits->Fill(z,r); h_x_y_hits->Fill(x,y); + + + h_3DPosition_digi->Fill(x, y, z); + h_3DPosition_cdigi->Fill(theta_min, r, z); + if(layerID==0){ h_z_layer0->Fill(z); h_r_layer0->Fill(r); + //setting cluster and time of arrive with if j == 0 becuase we do not want fill the cluster edep and toa for clusters multiple times + if(j==0){ + h_cluster_edep_layer0->Fill(EDep); + h_trackerhit_time_layer0->Fill(toa); + h_thclen_layer0->Fill(rawHits.size()); + if(rawHits.size() > 15) h_thclen_layer0_cut->Fill(rawHits.size()); + // if(toa < 0.2){ + // h_cluster_edep_Tcut_layer0->Fill(EDep); + // h_trackerhit_time_Tcut_layer0->Fill(toa); + // } + } + h_hit_edep_layer0->Fill(hitConstituent->getEDep()); //energy in electrons -- Juliet + + + //std::cout << "tracker hit time: " << toa << ", and edep cluster: "<< EDep <<", and edep hit : " << hitConstituent->getEDep() << ", with hit num: " << rawHits.size() << std::endl; + h_size_theta_tot_0->Fill(incidentTheta, cluster_size_tot); h_size_theta_x_0->Fill(incidentTheta, cluster_size_x); h_size_theta_y_0->Fill(incidentTheta, cluster_size_y); @@ -222,6 +393,17 @@ void ClusterHists::fill(const EVENT::TrackerHit* trkhit) if(layerID==1){ h_z_layer1->Fill(z); h_r_layer1->Fill(r); + if(j == 0){ + h_cluster_edep_layer1->Fill(EDep); + h_trackerhit_time_layer1->Fill(toa); //time of arrive in layer 2 -- Juliet + h_thclen_layer1->Fill(rawHits.size()); + if(rawHits.size() > 15) h_thclen_layer1_cut->Fill(rawHits.size()); + // if(toa < 0.2){ + // h_cluster_edep_Tcut_layer1->Fill(EDep); + // h_trackerhit_time_Tcut_layer1->Fill(toa); + // } + } + h_hit_edep_layer1->Fill(hitConstituent->getEDep()); //energy in electrons -- Juliet h_size_theta_tot_1->Fill(incidentTheta, cluster_size_tot); h_size_theta_x_1->Fill(incidentTheta, cluster_size_x); h_size_theta_y_1->Fill(incidentTheta, cluster_size_y); @@ -229,6 +411,18 @@ void ClusterHists::fill(const EVENT::TrackerHit* trkhit) if(layerID==2){ h_z_layer2->Fill(z); h_r_layer2->Fill(r); + if(j==0){ + h_cluster_edep_layer2->Fill(EDep); + h_trackerhit_time_layer2->Fill(toa); + h_thclen_layer2->Fill(rawHits.size()); + if(rawHits.size() > 15) h_thclen_layer2_cut->Fill(rawHits.size()); + // if(toa < 0.2){ + // h_cluster_edep_Tcut_layer2->Fill(EDep); + // h_trackerhit_time_Tcut_layer2->Fill(toa); + // } + } + h_hit_edep_layer2->Fill(hitConstituent->getEDep()); //energy in electrons -- Juliet + h_size_theta_tot_2->Fill(incidentTheta, cluster_size_tot); h_size_theta_x_2->Fill(incidentTheta, cluster_size_x); h_size_theta_y_2->Fill(incidentTheta, cluster_size_y); @@ -236,6 +430,17 @@ void ClusterHists::fill(const EVENT::TrackerHit* trkhit) if(layerID==3){ h_z_layer3->Fill(z); h_r_layer3->Fill(r); + if(j==0){ + h_cluster_edep_layer3->Fill(EDep); + h_trackerhit_time_layer3->Fill(toa); + h_thclen_layer3->Fill(rawHits.size()); + if(rawHits.size() > 15) h_thclen_layer3_cut->Fill(rawHits.size()); + // if(toa < 0.2){ + // h_cluster_edep_Tcut_layer3->Fill(EDep); + // h_trackerhit_time_Tcut_layer3->Fill(toa); + // } + } + h_hit_edep_layer3->Fill(hitConstituent->getEDep()); //energy in electrons -- Juliet h_size_theta_tot_3->Fill(incidentTheta, cluster_size_tot); h_size_theta_x_3->Fill(incidentTheta, cluster_size_x); h_size_theta_y_3->Fill(incidentTheta, cluster_size_y); @@ -243,6 +448,17 @@ void ClusterHists::fill(const EVENT::TrackerHit* trkhit) if(layerID==4){ h_z_layer4->Fill(z); h_r_layer4->Fill(r); + if(j==0){ + h_cluster_edep_layer4->Fill(EDep); + h_trackerhit_time_layer4->Fill(toa); + h_thclen_layer4->Fill(rawHits.size()); + if(rawHits.size() > 15) h_thclen_layer4_cut->Fill(rawHits.size()); + // if(toa < 0.2){ + // h_cluster_edep_Tcut_layer4->Fill(EDep); + // h_trackerhit_time_Tcut_layer4->Fill(toa); + // } + } + h_hit_edep_layer4->Fill(hitConstituent->getEDep()); //energy in electrons -- Juliet h_size_theta_tot_4->Fill(incidentTheta, cluster_size_tot); h_size_theta_x_4->Fill(incidentTheta, cluster_size_x); h_size_theta_y_4->Fill(incidentTheta, cluster_size_y); @@ -250,6 +466,17 @@ void ClusterHists::fill(const EVENT::TrackerHit* trkhit) if(layerID==5){ h_z_layer5->Fill(z); h_r_layer5->Fill(r); + if(j==0){ + h_cluster_edep_layer5->Fill(EDep); + h_trackerhit_time_layer5->Fill(toa); + h_thclen_layer5->Fill(rawHits.size()); + if(rawHits.size() > 15) h_thclen_layer5_cut->Fill(rawHits.size()); + // if(toa < 0.2){ + // h_cluster_edep_Tcut_layer5->Fill(EDep); + // h_trackerhit_time_Tcut_layer5->Fill(toa); + // } + } + h_hit_edep_layer5->Fill(hitConstituent->getEDep()); //energy in electrons -- Juliet h_size_theta_tot_5->Fill(incidentTheta, cluster_size_tot); h_size_theta_x_5->Fill(incidentTheta, cluster_size_x); h_size_theta_y_5->Fill(incidentTheta, cluster_size_y); @@ -257,6 +484,17 @@ void ClusterHists::fill(const EVENT::TrackerHit* trkhit) if(layerID==6){ h_z_layer6->Fill(z); h_r_layer6->Fill(r); + if(j==0){ + h_cluster_edep_layer6->Fill(EDep); + h_trackerhit_time_layer6->Fill(toa); + h_thclen_layer6->Fill(rawHits.size()); + if(rawHits.size() > 15) h_thclen_layer6_cut->Fill(rawHits.size()); + // if(toa < 0.2){ + // h_cluster_edep_Tcut_layer6->Fill(EDep); + // h_trackerhit_time_Tcut_layer6->Fill(toa); + // } + } + h_hit_edep_layer6->Fill(hitConstituent->getEDep()); //energy in electrons -- Juliet h_size_theta_tot_6->Fill(incidentTheta, cluster_size_tot); h_size_theta_x_6->Fill(incidentTheta, cluster_size_x); h_size_theta_y_6->Fill(incidentTheta, cluster_size_y); @@ -264,6 +502,17 @@ void ClusterHists::fill(const EVENT::TrackerHit* trkhit) if(layerID==7){ h_z_layer7->Fill(z); h_r_layer7->Fill(r); + if(j==0){ + h_cluster_edep_layer7->Fill(EDep); + h_trackerhit_time_layer7->Fill(toa); + h_thclen_layer7->Fill(rawHits.size()); + if(rawHits.size() > 15) h_thclen_layer7_cut->Fill(rawHits.size()); + // if(toa < 0.2){ + // h_cluster_edep_Tcut_layer7->Fill(EDep); + // h_trackerhit_time_Tcut_layer7->Fill(toa); + // } + } + h_hit_edep_layer7->Fill(hitConstituent->getEDep()); //energy in electrons -- Juliet h_size_theta_tot_7->Fill(incidentTheta, cluster_size_tot); h_size_theta_x_7->Fill(incidentTheta, cluster_size_x); h_size_theta_y_7->Fill(incidentTheta, cluster_size_y); @@ -271,6 +520,13 @@ void ClusterHists::fill(const EVENT::TrackerHit* trkhit) if(layerID==8){ h_z_layer8->Fill(z); h_r_layer8->Fill(r); + if(j==0){ + h_cluster_edep_layer8->Fill(EDep); + h_trackerhit_time_layer8->Fill(toa); + h_thclen_layer8->Fill(rawHits.size()); + if(rawHits.size() > 15) h_thclen_layer8_cut->Fill(rawHits.size()); + } + h_hit_edep_layer8->Fill(hitConstituent->getEDep()); //energy in electrons -- Juliet h_size_theta_tot_8->Fill(incidentTheta, cluster_size_tot); h_size_theta_x_8->Fill(incidentTheta, cluster_size_x); h_size_theta_y_8->Fill(incidentTheta, cluster_size_y); @@ -287,20 +543,24 @@ void ClusterHists::fill(const EVENT::TrackerHit* trkhit) h_x_y_vx->Fill(x,y); h_cluster_edep->Fill(EDep); + //NEW 2/19/2025 + // if (toa > tmin && toa < tmax){ + // if(toa < 0.2e-3){ + // h_cluster_edep_Tcut->Fill(EDep); + // h_trackerhit_time_Tcut->Fill(toa); + // } + // } h_cluster_edep_BX->Fill(EDep); h_edep_r->Fill(r,EDep); h_edep_cluster->Fill(EDep,cluster_size_tot); + h_thclen->Fill(rawHits.size()); // -- JULIET - // Fill energy deposition histograms based on angle - /*float theta_deg = incidentTheta * (180/3.1416); - if(theta_deg < 5 || theta_deg > 175){ - h_edep_0deg->Fill(EDep); + //2D hist for clusterEnergy vs Time of arrival with color bar for number of hits per cluster + for(int i = 0; i < rawHits.size(); i++){ + h_toa_edepCluster->Fill(toa, EDep); } - if(theta_deg > 89 && theta_deg < 91){ - h_edep_90deg->Fill(EDep); - } */ - + // Fill based on which double layer region was hit if(layerID==0 or layerID==1){ h_cluster_pos_0->Fill(z,r);