Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:13:56

0001 #pragma once
0002 
0003 struct cluster
0004 {
0005   int evt;
0006   uint64_t bco;
0007 
0008   double x, y, z, r;
0009   double adc;
0010   double size;
0011   int layer;
0012   TVector3 pos;
0013 
0014   double x_vtx;
0015   double y_vtx;
0016   double z_vtx;
0017   double r_vtx;
0018   vector < double > zline;
0019   double theta_clus;
0020   double phi_clus;
0021 
0022   // information related to tracklet
0023   bool is_associated;
0024   double track_incoming_theta;
0025   double track_incoming_phi;
0026 
0027   double dca_mean[3];
0028 
0029   void set(int Evt, uint64_t Bco,
0030        double X, double Y, double Z,
0031        double Adc, double Size, int Layer,
0032        double X_vtx, double Y_vtx, double Z_vtx )
0033   {
0034     evt = Evt;
0035     bco = Bco;
0036     x = X;
0037     y = Y;
0038     z = Z;
0039     adc = Adc;
0040     size = Size;
0041     layer = Layer;
0042     pos = TVector3(x, y, z);
0043     r = y / fabs(y) * sqrt(x * x + y * y);
0044     get_zline();
0045 
0046     // truth vertex
0047     x_vtx = X_vtx;
0048     y_vtx = Y_vtx;
0049     z_vtx = Z_vtx;
0050     r_vtx = (y_vtx / fabs(y_vtx)) * sqrt(x_vtx * x_vtx + y_vtx * y_vtx);
0051 
0052     is_associated = false;
0053     track_incoming_theta = 0;
0054     track_incoming_phi = 0;
0055     //
0056   }
0057 
0058   void print()
0059   {
0060     cout << "(" << setw(8) << x << ", " << setw(8) << y << ", " << setw(8) << z << ")\t"
0061      << size << "\t"
0062      << layer << "\t"
0063      << adc << "\t"
0064      << is_associated << " "
0065      << track_incoming_theta
0066      << endl;
0067   }
0068   
0069   double getphi_clus() // from truth vertex
0070   {
0071     phi_clus = atan2((y - y_vtx), (x - x_vtx));
0072 
0073     return phi_clus;
0074   }
0075 
0076   double gettheta_clus() // from truth vertex
0077   {
0078     // from the truth vertex
0079     theta_clus = atan2((fabs(r) - fabs(r_vtx)), (z - z_vtx));
0080 
0081     return theta_clus;
0082   }
0083 
0084   void get_zline()
0085   {
0086     double chip_width;
0087 
0088     if (fabs(z) <= 12.8)
0089       chip_width = 0.8;
0090     else
0091       chip_width = 1.;
0092     
0093     zline.push_back(z - chip_width);
0094     zline.push_back(z + chip_width);
0095   }
0096   
0097 };