File indexing completed on 2025-08-05 08:11:54
0001
0002
0003 #include "/sphenix/user/ChengWei/INTT/INTT_commissioning/INTT_CW/INTT_commissioning/DAC_Scan/InttClustering.h"
0004 #include "sigmaEff.h"
0005 #include "sPhenixStyle.C"
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 vector<vector<int>> adc_setting_run = {
0026 {15, 30, 60, 90, 120, 150, 180, 210, 240}
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038 };
0039
0040 TString color_code_2[8] = {"#CC768D","#19768D","#DDA573","#009193","#6E9193","#941100","#A08144","#517E66"};
0041
0042 struct full_hit_info {
0043 int FC;
0044 int chip_id;
0045 int chan_id;
0046 int adc;
0047 };
0048
0049
0050 struct ladder_info {
0051 int FC;
0052 TString Port;
0053 int ROC;
0054 int Direction;
0055 };
0056
0057 double get_radius(double x, double y)
0058 {
0059 return sqrt(pow(x,2)+pow(y,2));
0060 }
0061
0062 double get_radius_sign(double x, double y)
0063 {
0064 double phi = ((y) < 0) ? atan2((y),(x)) * (180./TMath::Pi()) + 360 : atan2((y),(x)) * (180./TMath::Pi());
0065
0066 return (phi > 180) ? sqrt(pow(x,2)+pow(y,2)) * -1 : sqrt(pow(x,2)+pow(y,2));
0067 }
0068
0069 void Characterize_Pad (TPad *pad, float left = 0.15, float right = 0.1, float top = 0.1, float bottom = 0.12, bool set_logY = false, int setgrid_bool = 0)
0070 {
0071 if (setgrid_bool == true) {pad -> SetGrid (1, 1);}
0072 pad -> SetLeftMargin (left);
0073 pad -> SetRightMargin (right);
0074 pad -> SetTopMargin (top);
0075 pad -> SetBottomMargin (bottom);
0076 pad -> SetTicks(1,1);
0077 if (set_logY == true)
0078 {
0079 pad -> SetLogy (1);
0080 }
0081
0082 }
0083
0084 std::vector<double> calculateDistanceAndClosestPoint(double x1, double y1, double x2, double y2, double target_x, double target_y) {
0085
0086 if (x1 != x2)
0087 {
0088
0089 double a = (y2 - y1) / (x2 - x1);
0090 double b = y1 - a * x1;
0091
0092
0093
0094
0095 double closest_distance = std::abs(a * target_x - target_y + b) / std::sqrt(a * a + 1);
0096
0097
0098 double Xc = (target_x + a * target_y - a * b) / (a * a + 1);
0099 double Yc = a * Xc + b;
0100
0101 return { closest_distance, Xc, Yc };
0102 }
0103 else
0104 {
0105 double closest_distance = std::abs(x1 - target_x);
0106 double Xc = x1;
0107 double Yc = target_y;
0108
0109 return { closest_distance, Xc, Yc };
0110 }
0111
0112
0113 }
0114
0115 double get_z_vertex(clu_info inner_clu, clu_info outer_clu, double target_x, double target_y)
0116 {
0117
0118
0119 double inner_clu_r = sqrt(pow(inner_clu.x,2)+ pow(inner_clu.y,2));
0120 double outer_clu_r = sqrt(pow(outer_clu.x,2)+ pow(outer_clu.y,2));
0121 double target_r = sqrt(pow(target_x,2) + pow(target_y,2));
0122
0123
0124 if ( fabs(outer_clu.z - inner_clu.z) < 0.00001 ){
0125 return outer_clu.z;
0126 }
0127 else {
0128 double slope = (outer_clu_r - inner_clu_r) / (outer_clu.z - inner_clu.z);
0129 double yIntercept = inner_clu_r - slope * inner_clu.z;
0130 double xCoordinate = (target_r - yIntercept) / slope;
0131 return xCoordinate;
0132 }
0133
0134 }
0135
0136
0137 double calculateAngleBetweenVectors(double x1, double y1, double x2, double y2, double targetX, double targetY) {
0138
0139 double vector1X = x2 - x1;
0140 double vector1Y = y2 - y1;
0141
0142 double vector2X = targetX - x1;
0143 double vector2Y = targetY - y1;
0144
0145
0146 double crossProduct = vector1X * vector2Y - vector1Y * vector2X;
0147
0148
0149
0150
0151 double magnitude1 = std::sqrt(vector1X * vector1X + vector1Y * vector1Y);
0152 double magnitude2 = std::sqrt(vector2X * vector2X + vector2Y * vector2Y);
0153
0154
0155 double dotProduct = vector1X * vector2X + vector1Y * vector2Y;
0156
0157 double angleInRadians = std::atan2(std::abs(crossProduct), dotProduct);
0158
0159 double angleInDegrees = angleInRadians * 180.0 / M_PI;
0160
0161 double angleInRadians_new = std::asin( crossProduct/(magnitude1*magnitude2) );
0162 double angleInDegrees_new = angleInRadians_new * 180.0 / M_PI;
0163
0164
0165
0166 double DCA_distance = sin(angleInRadians_new) * magnitude2;
0167
0168 return DCA_distance;
0169 }
0170
0171 void temp_bkg(TPad * c1, string conversion_mode, double peek, pair<double,double> beam_origin)
0172 {
0173 c1 -> cd();
0174
0175 int N_ladder[4] = {12, 12, 16, 16};
0176 string ladder_index_string[16] = {"00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15"};
0177
0178 vector<double> x_vec; x_vec.clear();
0179 vector<double> y_vec; y_vec.clear();
0180
0181 vector<double> x_vec_2; x_vec_2.clear();
0182 vector<double> y_vec_2; y_vec_2.clear();
0183
0184 TGraph * bkg = new TGraph();
0185 bkg -> SetTitle("INTT event display X-Y plane");
0186 bkg -> SetMarkerStyle(20);
0187 bkg -> SetMarkerSize(0.1);
0188 bkg -> SetPoint(0,0,0);
0189 bkg -> SetPoint(1,beam_origin.first,beam_origin.second);
0190 bkg -> GetXaxis() -> SetLimits(-150,150);
0191 bkg -> GetYaxis() -> SetRangeUser(-150,150);
0192 bkg -> GetXaxis() -> SetTitle("X [mm]");
0193 bkg -> GetYaxis() -> SetTitle("Y [mm]");
0194
0195 bkg -> Draw("ap");
0196
0197 TLine * ladder_line = new TLine();
0198 ladder_line -> SetLineWidth(1);
0199
0200 for (int server_i = 0; server_i < 4; server_i++)
0201 {
0202 for (int FC_i = 0; FC_i < 14; FC_i++)
0203 {
0204 ladder_line -> DrawLine(
0205 InttConversion::Get_XY_all(Form("intt%i",server_i),FC_i,14,0,conversion_mode,peek).x, InttConversion::Get_XY_all(Form("intt%i",server_i),FC_i,14,0,conversion_mode,peek).y,
0206 InttConversion::Get_XY_all(Form("intt%i",server_i),FC_i,1,0,conversion_mode,peek).x, InttConversion::Get_XY_all(Form("intt%i",server_i),FC_i,1,0,conversion_mode,peek).y
0207 );
0208 }
0209 }
0210
0211 ladder_line -> Draw("l same");
0212
0213 }
0214
0215 double grEY_stddev (TGraphErrors * input_grr)
0216 {
0217 vector<double> input_vector; input_vector.clear();
0218 for (int i = 0; i < input_grr -> GetN(); i++)
0219 {
0220 input_vector.push_back( input_grr -> GetPointY(i) );
0221 }
0222
0223 double sum=0;
0224 double average;
0225 double sum_subt = 0;
0226 for (int i=0; i<input_vector.size(); i++)
0227 {
0228 sum+=input_vector[i];
0229
0230 }
0231 average=sum/input_vector.size();
0232
0233
0234 for (int i=0; i<input_vector.size(); i++)
0235 {
0236
0237 sum_subt+=pow((input_vector[i]-average),2);
0238
0239 }
0240
0241 double stddev;
0242 stddev=sqrt(sum_subt/(input_vector.size()-1));
0243 return stddev;
0244 }
0245
0246 pair<double, double> mirrorPolynomial(double a, double b) {
0247
0248 double mirroredA = 1.0 / a;
0249 double mirroredB = -b / a;
0250
0251 return {mirroredA, mirroredB};
0252 }
0253
0254
0255
0256
0257
0258 double Get_eta(vector<double>p0, vector<double>p1, vector<double>p2)
0259 {
0260 vector<double> r_vec = {p0[0], p1[0], p2[0]};
0261 vector<double> z_vec = {p0[1], p1[1], p2[1]};
0262 vector<double> re_vec = {0, 0, 0};
0263 vector<double> ze_vec = {p0[2], ( fabs( p1[1] ) < 130 ) ? 8. : 10., ( fabs( p2[1] ) < 130 ) ? 8. : 10.};
0264
0265
0266
0267 TGraphErrors * track_gr = new TGraphErrors(3,&r_vec[0],&z_vec[0],&re_vec[0],&ze_vec[0]);
0268
0269 double vertical_line = ( fabs( grEY_stddev(track_gr) ) < 0.00001 ) ? 1 : 0;
0270
0271 if (vertical_line) {return 0;}
0272 else
0273 {
0274 TF1 * fit_rz = new TF1("fit_rz","pol1",-500,500);
0275 fit_rz -> SetParameters(0,0);
0276
0277 track_gr -> Fit(fit_rz,"NQ");
0278
0279 pair<double,double> ax_b = mirrorPolynomial(fit_rz -> GetParameter(1),fit_rz -> GetParameter(0));
0280
0281 return -1 * TMath::Log( fabs( tan( atan2(ax_b.first, (ax_b.first > 0) ? 1. : -1. ) / 2 ) ) );
0282
0283 }
0284
0285 }
0286
0287
0288
0289
0290
0291 double Get_eta_2P(vector<double>p0, vector<double>p1)
0292 {
0293
0294
0295
0296
0297
0298
0299
0300
0301
0302
0303
0304 return -1 * TMath::Log( fabs( tan( atan2(p1[0] - p0[0], p1[1] - p0[1]) / 2 ) ) );
0305
0306
0307
0308
0309
0310
0311
0312
0313
0314
0315
0316
0317 }
0318
0319
0320
0321
0322 void dNdeta()
0323 {
0324
0325 TCanvas * c4 = new TCanvas("","",850,800);
0326 c4 -> cd();
0327
0328 TCanvas * c2 = new TCanvas("","",2500,800);
0329 c2 -> cd();
0330 TPad *pad_xy = new TPad(Form("pad_xy"), "", 0.0, 0.0, 0.33, 1.0);
0331 Characterize_Pad(pad_xy, 0.15, 0.1, 0.1, 0.1 , 0, 0);
0332 pad_xy -> Draw();
0333
0334 TPad *pad_rz = new TPad(Form("pad_rz"), "", 0.33, 0.0, 0.66, 1.0);
0335 Characterize_Pad(pad_rz, 0.15, 0.1, 0.1, 0.1 , 0, 0);
0336 pad_rz -> Draw();
0337
0338 TPad *pad_z = new TPad(Form("pad_z"), "", 0.66, 0.0, 1.0, 1.0);
0339 Characterize_Pad(pad_z, 0.15, 0.1, 0.1, 0.1 , 0, 0);
0340 pad_z -> Draw();
0341
0342 TCanvas * c1 = new TCanvas("","",1000,800);
0343 c1 -> cd();
0344
0345
0346
0347
0348
0349
0350
0351 string mother_folder_directory = "/sphenix/user/ChengWei/INTT/INTT_commissioning/ZeroField/20869";
0352 string file_name = "beam_inttall-00020869-0000_event_base_ana_cluster_survey_1_XYAlpha_Peek_3.32mm_excludeR20000_150kEvent_3HotCut";
0353
0354
0355
0356
0357 system(Form("mkdir %s/folder_%s",mother_folder_directory.c_str(),file_name.c_str()));
0358 system(Form("mkdir %s/folder_%s/good_track",mother_folder_directory.c_str(),file_name.c_str()));
0359
0360 pair<double,double> beam_origin = {-0,2};
0361 double temp_Y_align = 0.;
0362 double temp_X_align = -0.;
0363
0364 double zvtx_hist_l = -500;
0365 double zvtx_hist_r = 500;
0366
0367 int Nhit_cut = 20000;
0368 int Nhit_cutl = 400;
0369 int clu_size_cut = 4;
0370 double clu_sum_adc_cut = 31;
0371 int N_clu_cut = 15000;
0372 double phi_diff_cut = 3.5;
0373 double DCA_cut = 4;
0374 int zvtx_cal_require = 15;
0375 int zvtx_draw_requireL = 15;
0376 int zvtx_draw_requireR = 40000;
0377 double Integrate_portion = 0.4;
0378 double Integrate_portion_final = 0.68;
0379 bool draw_event_display = true;
0380 int print_rate = 5;
0381
0382 double mean_zvtx = -210.67;
0383
0384 bool full_event = false;
0385 long long used_event = 10000;
0386
0387 double dNdeta_upper_range = 1.5;
0388
0389 int geo_mode_id = 1;
0390 string conversion_mode = (geo_mode_id == 0) ? "ideal" : "survey_1_XYAlpha_Peek";
0391 double peek = 3.32405;
0392
0393 TFile * file_in = new TFile(Form("%s/%s.root",mother_folder_directory.c_str(),file_name.c_str()),"read");
0394 TTree * tree = (TTree *)file_in->Get("tree_clu");
0395
0396 long long N_event = (full_event == true) ? tree -> GetEntries() : used_event;
0397 cout<<Form("N_event in file %s : %lli",file_name.c_str(), N_event)<<endl;
0398
0399 int N_hits;
0400 int N_cluster_inner;
0401 int N_cluster_outer;
0402 vector<int>* column_vec = new vector<int>();
0403 vector<double>* avg_chan_vec = new vector<double>();
0404 vector<int>* sum_adc_vec = new vector<int>();
0405 vector<int>* sum_adc_conv_vec = new vector<int>();
0406 vector<int>* size_vec = new vector<int>();
0407 vector<double>* x_vec = new vector<double>();
0408 vector<double>* y_vec = new vector<double>();
0409 vector<double>* z_vec = new vector<double>();
0410 vector<int>* layer_vec = new vector<int>();
0411 vector<double>* phi_vec = new vector<double>();
0412
0413 tree -> SetBranchAddress("nhits",&N_hits);
0414 tree -> SetBranchAddress("nclu_inner",&N_cluster_inner);
0415 tree -> SetBranchAddress("nclu_outer",&N_cluster_outer);
0416
0417 tree -> SetBranchAddress("column", &column_vec);
0418 tree -> SetBranchAddress("avg_chan", &avg_chan_vec);
0419 tree -> SetBranchAddress("sum_adc", &sum_adc_vec);
0420 tree -> SetBranchAddress("sum_adc_conv", &sum_adc_conv_vec);
0421 tree -> SetBranchAddress("size", &size_vec);
0422 tree -> SetBranchAddress("x", &x_vec);
0423 tree -> SetBranchAddress("y", &y_vec);
0424 tree -> SetBranchAddress("z", &z_vec);
0425 tree -> SetBranchAddress("layer", &layer_vec);
0426 tree -> SetBranchAddress("phi", &phi_vec);
0427
0428 TLatex *draw_text = new TLatex();
0429 draw_text -> SetNDC();
0430 draw_text -> SetTextSize(0.02);
0431
0432 vector<clu_info> temp_sPH_inner_nocolumn_vec; temp_sPH_inner_nocolumn_vec.clear();
0433 vector<clu_info> temp_sPH_outer_nocolumn_vec; temp_sPH_outer_nocolumn_vec.clear();
0434 vector<vector<double>> temp_sPH_nocolumn_vec(2);
0435 vector<vector<double>> temp_sPH_nocolumn_rz_vec(2);
0436
0437 TH2F * angle_correlation = new TH2F("","angle_correlation",361,0,361,361,0,361);
0438 angle_correlation -> SetStats(0);
0439 angle_correlation -> GetXaxis() -> SetTitle("Inner Phi (degree)");
0440 angle_correlation -> GetYaxis() -> SetTitle("Outer Phi (degree)");
0441
0442 TH2F * inner_pos_xy = new TH2F("","inner_pos_xy",360,-100,100,360,-100,100);
0443 inner_pos_xy -> SetStats(0);
0444 inner_pos_xy -> GetXaxis() -> SetTitle("X axis");
0445 inner_pos_xy -> GetYaxis() -> SetTitle("Y axis");
0446
0447 TH2F * outer_pos_xy = new TH2F("","outer_pos_xy",360,-150,150,360,-150,150);
0448 outer_pos_xy -> SetStats(0);
0449 outer_pos_xy -> GetXaxis() -> SetTitle("X axis");
0450 outer_pos_xy -> GetYaxis() -> SetTitle("Y axis");
0451
0452 TH2F * inner_outer_pos_xy = new TH2F("","inner_outer_pos_xy",360,-150,150,360,-150,150);
0453 inner_outer_pos_xy -> SetStats(0);
0454 inner_outer_pos_xy -> GetXaxis() -> SetTitle("X axis");
0455 inner_outer_pos_xy -> GetYaxis() -> SetTitle("Y axis");
0456
0457 TH1F * z_pos_diff = new TH1F("","z_pos_diff",360,-150,150);
0458 z_pos_diff -> GetXaxis() -> SetTitle("inner zpos - outer zpos");
0459 z_pos_diff -> GetYaxis() -> SetTitle("Eentry");
0460
0461 TH2F * z_pos_diff_angle_diff = new TH2F("","z_pos_diff_angle_diff",100,-25,25,200,-11,11);
0462 z_pos_diff_angle_diff -> SetStats(0);
0463 z_pos_diff_angle_diff -> GetXaxis() -> SetTitle("inner zpos - outer zpos");
0464 z_pos_diff_angle_diff -> GetYaxis() -> SetTitle("Inner phi - outer phi");
0465
0466 TH1F * Nhits_good = new TH1F("","Nhits_good",360,0,1000);
0467 Nhits_good -> GetXaxis() -> SetTitle("N hits in one event");
0468 Nhits_good -> GetYaxis() -> SetTitle("Eentry");
0469
0470 TH1F * z_pos_inner = new TH1F("","z_pos_inner",200,-150,150);
0471 z_pos_inner -> GetXaxis() -> SetTitle("inner zpos");
0472 z_pos_inner -> GetYaxis() -> SetTitle("Eentry");
0473
0474 TH1F * z_pos_outer = new TH1F("","z_pos_outer",200,-150,150);
0475 z_pos_outer -> GetXaxis() -> SetTitle("outer zpos");
0476 z_pos_outer -> GetYaxis() -> SetTitle("Eentry");
0477
0478 TH2F * z_pos_inner_outer = new TH2F("","z_pos_inner_outer",100,-150,150, 100,-150,150);
0479 z_pos_inner_outer -> SetStats(0);
0480 z_pos_inner_outer -> GetXaxis() -> SetTitle("inner zpos");
0481 z_pos_inner_outer -> GetYaxis() -> SetTitle("outer pos");
0482
0483 TH2F * DCA_point = new TH2F("","DCA_point",100,-10,10,100,-10,10);
0484 DCA_point -> SetStats(0);
0485 DCA_point -> GetXaxis() -> SetTitle("X pos (mm)");
0486 DCA_point -> GetYaxis() -> SetTitle("Y pos (mm)");
0487
0488 TH2F * DCA_distance_inner_phi = new TH2F("","DCA_distance_inner_phi",100,0,360,100,-10,10);
0489 DCA_distance_inner_phi -> SetStats(0);
0490 DCA_distance_inner_phi -> GetXaxis() -> SetTitle("inner phi");
0491 DCA_distance_inner_phi -> GetYaxis() -> SetTitle("DCA (mm)");
0492
0493 TH2F * DCA_distance_outer_phi = new TH2F("","DCA_distance_outer_phi",100,0,360,100,-10,10);
0494 DCA_distance_outer_phi -> SetStats(0);
0495 DCA_distance_outer_phi -> GetXaxis() -> SetTitle("outer phi");
0496 DCA_distance_outer_phi -> GetYaxis() -> SetTitle("DCA (mm)");
0497
0498 TH1F * N_cluster_outer_pass = new TH1F("","N_cluster_outer_pass",100,0,100);
0499 N_cluster_outer_pass -> GetXaxis() -> SetTitle("N_cluster");
0500 N_cluster_outer_pass -> GetYaxis() -> SetTitle("Eentry");
0501
0502 TH1F * N_cluster_inner_pass = new TH1F("","N_cluster_inner_pass",100,0,100);
0503 N_cluster_inner_pass -> GetXaxis() -> SetTitle("N_cluster");
0504 N_cluster_inner_pass -> GetYaxis() -> SetTitle("Eentry");
0505
0506 TH2F * N_cluster_correlation = new TH2F("","N_cluster_correlation",100,0,500,100,0,500);
0507 N_cluster_correlation -> SetStats(0);
0508 N_cluster_correlation -> GetXaxis() -> SetTitle("inner N_cluster");
0509 N_cluster_correlation -> GetYaxis() -> SetTitle("Outer N_cluster");
0510
0511 TH1F * temp_event_zvtx = new TH1F("","Z vertex dist",125,zvtx_hist_l,zvtx_hist_r);
0512 temp_event_zvtx -> GetXaxis() -> SetTitle("Z vertex position (mm)");
0513 temp_event_zvtx -> GetYaxis() -> SetTitle("Entry");
0514 vector<float> temp_event_zvtx_vec; temp_event_zvtx_vec.clear();
0515 vector<float> temp_event_zvtx_info; temp_event_zvtx_info.clear();
0516 TLine * effi_sig_range_line = new TLine();
0517 effi_sig_range_line -> SetLineWidth(3);
0518 effi_sig_range_line -> SetLineColor(TColor::GetColor("#A08144"));
0519 effi_sig_range_line -> SetLineStyle(2);
0520 TF1 * zvtx_fitting = new TF1("","gaus",-500,500);
0521
0522
0523
0524 TH1F * dNdeta_hist = new TH1F("","",145,-2.9,2.9);
0525 dNdeta_hist -> SetMarkerStyle(20);
0526 dNdeta_hist -> SetMarkerSize(0.8);
0527 dNdeta_hist -> SetMarkerColor(TColor::GetColor("#1A3947"));
0528 dNdeta_hist -> SetLineColor(TColor::GetColor("#1A3947"));
0529 dNdeta_hist -> SetLineWidth(2);
0530 dNdeta_hist -> GetYaxis() -> SetTitle("dN_{ch}/d#eta");
0531 dNdeta_hist -> GetXaxis() -> SetTitle("#eta");
0532 dNdeta_hist -> GetYaxis() -> SetRangeUser(0,50);
0533 dNdeta_hist -> SetTitleSize(0.06, "X");
0534 dNdeta_hist -> SetTitleSize(0.06, "Y");
0535 dNdeta_hist -> GetXaxis() -> SetTitleOffset (0.71);
0536 dNdeta_hist -> GetYaxis() -> SetTitleOffset (1.1);
0537 dNdeta_hist -> GetXaxis() -> CenterTitle(true);
0538 dNdeta_hist -> GetYaxis() -> CenterTitle(true);
0539
0540
0541 TH1F * dNdeta_2P_inner_hist = new TH1F("","",145,-2.9,2.9);
0542 dNdeta_2P_inner_hist -> SetMarkerStyle(20);
0543 dNdeta_2P_inner_hist -> SetMarkerSize(0.8);
0544 dNdeta_2P_inner_hist -> SetMarkerColor(TColor::GetColor("#1A3947"));
0545 dNdeta_2P_inner_hist -> SetLineColor(TColor::GetColor("#1A3947"));
0546 dNdeta_2P_inner_hist -> SetLineWidth(2);
0547 dNdeta_2P_inner_hist -> GetYaxis() -> SetTitle("dN_{ch}/d#eta");
0548 dNdeta_2P_inner_hist -> GetXaxis() -> SetTitle("#eta");
0549 dNdeta_2P_inner_hist -> GetYaxis() -> SetRangeUser(0,50);
0550 dNdeta_2P_inner_hist -> SetTitleSize(0.06, "X");
0551 dNdeta_2P_inner_hist -> SetTitleSize(0.06, "Y");
0552 dNdeta_2P_inner_hist -> GetXaxis() -> SetTitleOffset (0.71);
0553 dNdeta_2P_inner_hist -> GetYaxis() -> SetTitleOffset (1.1);
0554 dNdeta_2P_inner_hist -> GetXaxis() -> CenterTitle(true);
0555 dNdeta_2P_inner_hist -> GetYaxis() -> CenterTitle(true);
0556
0557 TH1F * dNdeta_2P_outer_hist = new TH1F("","",29,-2.9,2.9);
0558 dNdeta_2P_outer_hist -> SetMarkerStyle(20);
0559 dNdeta_2P_outer_hist -> SetMarkerSize(0.8);
0560 dNdeta_2P_outer_hist -> SetMarkerColor(TColor::GetColor("#1A3947"));
0561 dNdeta_2P_outer_hist -> SetLineColor(TColor::GetColor("#1A3947"));
0562 dNdeta_2P_outer_hist -> SetLineWidth(2);
0563 dNdeta_2P_outer_hist -> GetYaxis() -> SetTitle("dN_{ch}/d#eta");
0564 dNdeta_2P_outer_hist -> GetXaxis() -> SetTitle("#eta");
0565 dNdeta_2P_outer_hist -> GetYaxis() -> SetRangeUser(0,50);
0566 dNdeta_2P_outer_hist -> SetTitleSize(0.06, "X");
0567 dNdeta_2P_outer_hist -> SetTitleSize(0.06, "Y");
0568 dNdeta_2P_outer_hist -> GetXaxis() -> SetTitleOffset (0.71);
0569 dNdeta_2P_outer_hist -> GetYaxis() -> SetTitleOffset (1.1);
0570 dNdeta_2P_outer_hist -> GetXaxis() -> CenterTitle(true);
0571 dNdeta_2P_outer_hist -> GetYaxis() -> CenterTitle(true);
0572
0573 double N_good_event = 0;
0574
0575 TH2F * Good_inner_outer_pos_xy_nzB = new TH2F("","Good_inner_outer_pos_xy_nzB",360,-150,150,360,-150,150);
0576 Good_inner_outer_pos_xy_nzB -> SetStats(0);
0577 Good_inner_outer_pos_xy_nzB -> GetXaxis() -> SetTitle("X axis");
0578 Good_inner_outer_pos_xy_nzB -> GetYaxis() -> SetTitle("Y axis");
0579
0580 TH2F * Good_inner_outer_pos_xy_nzA = new TH2F("","Good_inner_outer_pos_xy_nzA",360,-150,150,360,-150,150);
0581 Good_inner_outer_pos_xy_nzA -> SetStats(0);
0582 Good_inner_outer_pos_xy_nzA -> GetXaxis() -> SetTitle("X axis");
0583 Good_inner_outer_pos_xy_nzA -> GetYaxis() -> SetTitle("Y axis");
0584
0585 TH2F * Good_inner_outer_pos_xy_pzA = new TH2F("","Good_inner_outer_pos_xy_pzA",360,-150,150,360,-150,150);
0586 Good_inner_outer_pos_xy_pzA -> SetStats(0);
0587 Good_inner_outer_pos_xy_pzA -> GetXaxis() -> SetTitle("X axis");
0588 Good_inner_outer_pos_xy_pzA -> GetYaxis() -> SetTitle("Y axis");
0589
0590 TH2F * Good_inner_outer_pos_xy_pzB = new TH2F("","Good_inner_outer_pos_xy_pzB",360,-150,150,360,-150,150);
0591 Good_inner_outer_pos_xy_pzB -> SetStats(0);
0592 Good_inner_outer_pos_xy_pzB -> GetXaxis() -> SetTitle("X axis");
0593 Good_inner_outer_pos_xy_pzB -> GetYaxis() -> SetTitle("Y axis");
0594
0595 TH2F * Good_track_space = new TH2F("","Good_track_space",200,-300,300,200,-300,300);
0596 Good_track_space -> SetStats(0);
0597 Good_track_space -> GetXaxis() -> SetTitle("X axis");
0598 Good_track_space -> GetYaxis() -> SetTitle("Y axis");
0599
0600
0601
0602
0603
0604 vector<vector<double>> good_track_xy_vec; good_track_xy_vec.clear();
0605 vector<vector<double>> good_track_rz_vec; good_track_rz_vec.clear();
0606 vector<vector<double>> good_comb_rz_vec; good_comb_rz_vec.clear();
0607 vector<vector<double>> good_comb_xy_vec; good_comb_xy_vec.clear();
0608 vector<vector<double>> good_comb_phi_vec; good_comb_phi_vec.clear();
0609 vector<vector<double>> good_tracklet_rz; good_tracklet_rz.clear();
0610 TLine * track_line = new TLine();
0611 track_line -> SetLineWidth(1);
0612 track_line -> SetLineColorAlpha(38,0.5);
0613
0614 TLine * coord_line = new TLine();
0615 coord_line -> SetLineWidth(1);
0616 coord_line -> SetLineColor(16);
0617 coord_line -> SetLineStyle(2);
0618
0619
0620 vector<float> avg_event_zvtx_vec; avg_event_zvtx_vec.clear();
0621 TH1F * avg_event_zvtx = new TH1F("","avg_event_zvtx",125,zvtx_hist_l,zvtx_hist_r);
0622 avg_event_zvtx -> GetXaxis() -> SetTitle("Z vertex position (mm)");
0623 avg_event_zvtx -> GetYaxis() -> SetTitle("entry");
0624
0625 TH1F * zvtx_evt_width = new TH1F("","zvtx_evt_width",150,0,800);
0626 zvtx_evt_width -> GetXaxis() -> SetTitle(" mm ");
0627 zvtx_evt_width -> GetYaxis() -> SetTitle("entry");
0628
0629 int N_event_pass_number = 0;
0630
0631 if (draw_event_display) c2 -> Print(Form("%s/folder_%s/temp_event_display.pdf(",mother_folder_directory.c_str(),file_name.c_str()));
0632
0633 for (int event_i = 0; event_i < N_event; event_i++)
0634 {
0635 if (event_i % 1000 == 0) cout<<"code running... "<<event_i<<endl;
0636
0637 tree -> GetEntry(event_i);
0638 unsigned int length = column_vec -> size();
0639
0640 if (event_i == 13) cout<<"test, eID : "<<event_i<<" Nhits "<<N_hits<<endl;
0641
0642 if (N_hits > Nhit_cut) continue;
0643 if (N_hits < Nhit_cutl) continue;
0644
0645 N_event_pass_number += 1;
0646
0647 if (N_cluster_inner == 0 || N_cluster_outer == 0) continue;
0648 if (N_cluster_inner == -1 || N_cluster_outer == -1) continue;
0649 if ((N_cluster_inner + N_cluster_outer) < zvtx_cal_require) continue;
0650 if (N_cluster_inner < 30) continue;
0651 if (N_cluster_outer < 30) continue;
0652
0653
0654
0655
0656 for (int clu_i = 0; clu_i < length; clu_i++)
0657 {
0658 if (size_vec -> at(clu_i) > clu_size_cut) continue;
0659
0660 if (sum_adc_conv_vec -> at(clu_i) < clu_sum_adc_cut) continue;
0661
0662
0663
0664
0665
0666
0667
0668
0669
0670
0671
0672
0673
0674
0675
0676
0677
0678
0679
0680
0681
0682 temp_sPH_nocolumn_vec[0].push_back( (phi_vec -> at(clu_i) > 90 && phi_vec -> at(clu_i) < 270 ) ? x_vec -> at(clu_i) + temp_X_align : x_vec -> at(clu_i) );
0683 temp_sPH_nocolumn_vec[1].push_back( (phi_vec -> at(clu_i) > 90 && phi_vec -> at(clu_i) < 270 ) ? y_vec -> at(clu_i) + temp_Y_align : y_vec -> at(clu_i) );
0684
0685 double clu_radius = get_radius(
0686 (phi_vec -> at(clu_i) > 90 && phi_vec -> at(clu_i) < 270 ) ? x_vec -> at(clu_i) + temp_X_align : x_vec -> at(clu_i),
0687 (phi_vec -> at(clu_i) > 90 && phi_vec -> at(clu_i) < 270 ) ? y_vec -> at(clu_i) + temp_Y_align : y_vec -> at(clu_i)
0688 );
0689 temp_sPH_nocolumn_rz_vec[0].push_back(z_vec -> at(clu_i));
0690 temp_sPH_nocolumn_rz_vec[1].push_back( ( phi_vec -> at(clu_i) > 180 ) ? clu_radius * -1 : clu_radius );
0691
0692
0693 if (layer_vec -> at(clu_i) == 0)
0694 temp_sPH_inner_nocolumn_vec.push_back({
0695 column_vec -> at(clu_i),
0696 avg_chan_vec -> at(clu_i),
0697 sum_adc_vec -> at(clu_i),
0698 sum_adc_conv_vec -> at(clu_i),
0699 size_vec -> at(clu_i),
0700 (phi_vec -> at(clu_i) > 90 && phi_vec -> at(clu_i) < 270 ) ? x_vec -> at(clu_i) + temp_X_align : x_vec -> at(clu_i),
0701 (phi_vec -> at(clu_i) > 90 && phi_vec -> at(clu_i) < 270 ) ? y_vec -> at(clu_i) + temp_Y_align : y_vec -> at(clu_i),
0702 z_vec -> at(clu_i),
0703 layer_vec -> at(clu_i),
0704 phi_vec -> at(clu_i)
0705 });
0706
0707 if (layer_vec -> at(clu_i) == 1)
0708 temp_sPH_outer_nocolumn_vec.push_back({
0709 column_vec -> at(clu_i),
0710 avg_chan_vec -> at(clu_i),
0711 sum_adc_vec -> at(clu_i),
0712 sum_adc_conv_vec -> at(clu_i),
0713 size_vec -> at(clu_i),
0714 (phi_vec -> at(clu_i) > 90 && phi_vec -> at(clu_i) < 270 ) ? x_vec -> at(clu_i) + temp_X_align : x_vec -> at(clu_i),
0715 (phi_vec -> at(clu_i) > 90 && phi_vec -> at(clu_i) < 270 ) ? y_vec -> at(clu_i) + temp_Y_align : y_vec -> at(clu_i),
0716 z_vec -> at(clu_i),
0717 layer_vec -> at(clu_i),
0718 phi_vec -> at(clu_i)
0719 });
0720 }
0721
0722 N_cluster_outer_pass -> Fill(temp_sPH_outer_nocolumn_vec.size());
0723 N_cluster_inner_pass -> Fill(temp_sPH_inner_nocolumn_vec.size());
0724 N_cluster_correlation -> Fill( temp_sPH_inner_nocolumn_vec.size(), temp_sPH_outer_nocolumn_vec.size() );
0725
0726 if ((temp_sPH_inner_nocolumn_vec.size() + temp_sPH_outer_nocolumn_vec.size()) > N_clu_cut)
0727 {
0728 temp_event_zvtx_info = {-1000,-1000,-1000};
0729 temp_event_zvtx_vec.clear();
0730 temp_event_zvtx -> Reset("ICESM");
0731 good_track_xy_vec.clear();
0732 good_track_rz_vec.clear();
0733 good_comb_rz_vec.clear();
0734 good_comb_xy_vec.clear();
0735 good_comb_phi_vec.clear();
0736 temp_sPH_nocolumn_rz_vec.clear(); temp_sPH_nocolumn_rz_vec = vector<vector<double>>(2);
0737 temp_sPH_nocolumn_vec.clear(); temp_sPH_nocolumn_vec = vector<vector<double>>(2);
0738 temp_sPH_inner_nocolumn_vec.clear();
0739 temp_sPH_outer_nocolumn_vec.clear();
0740 continue;
0741 }
0742
0743
0744 vector<int> used_outer_check(temp_sPH_outer_nocolumn_vec.size(),0);
0745
0746 for ( int inner_i = 0; inner_i < temp_sPH_inner_nocolumn_vec.size(); inner_i++ )
0747 {
0748
0749 for ( int outer_i = 0; outer_i < temp_sPH_outer_nocolumn_vec.size(); outer_i++ )
0750 {
0751
0752 if (used_outer_check[outer_i] == 1) continue;
0753
0754 vector<double> DCA_info_vec = calculateDistanceAndClosestPoint(
0755 temp_sPH_inner_nocolumn_vec[inner_i].x, temp_sPH_inner_nocolumn_vec[inner_i].y,
0756 temp_sPH_outer_nocolumn_vec[outer_i].x, temp_sPH_outer_nocolumn_vec[outer_i].y,
0757 beam_origin.first, beam_origin.second
0758 );
0759
0760 double DCA_sign = calculateAngleBetweenVectors(
0761 temp_sPH_outer_nocolumn_vec[outer_i].x, temp_sPH_outer_nocolumn_vec[outer_i].y,
0762 temp_sPH_inner_nocolumn_vec[inner_i].x, temp_sPH_inner_nocolumn_vec[inner_i].y,
0763 beam_origin.first, beam_origin.second
0764 );
0765
0766 if (DCA_info_vec[0] != fabs(DCA_sign) && fabs( DCA_info_vec[0] - fabs(DCA_sign) ) > 0.1 )
0767 cout<<"different DCA : "<<DCA_info_vec[0]<<" "<<DCA_sign<<" diff : "<<DCA_info_vec[0] - fabs(DCA_sign)<<endl;
0768
0769
0770 if (fabs(temp_sPH_inner_nocolumn_vec[inner_i].phi - temp_sPH_outer_nocolumn_vec[outer_i].phi) < phi_diff_cut)
0771 {
0772 bool DCA_tag = false;
0773
0774 if (DCA_info_vec[0] < DCA_cut){
0775
0776 used_outer_check[outer_i] = 1;
0777
0778 double zvtx = get_z_vertex(temp_sPH_inner_nocolumn_vec[inner_i],temp_sPH_outer_nocolumn_vec[outer_i],DCA_info_vec[1],DCA_info_vec[2]);
0779
0780 temp_event_zvtx -> Fill( zvtx );
0781 if(zvtx_hist_l <= zvtx && zvtx <= zvtx_hist_r){
0782 temp_event_zvtx_vec.push_back( zvtx );
0783 }
0784
0785 good_track_xy_vec.push_back({temp_sPH_outer_nocolumn_vec[outer_i].x,temp_sPH_outer_nocolumn_vec[outer_i].y,DCA_info_vec[1],DCA_info_vec[2]});
0786 good_track_rz_vec.push_back({
0787 temp_sPH_outer_nocolumn_vec[outer_i].z, (temp_sPH_outer_nocolumn_vec[outer_i].phi > 180) ? get_radius(temp_sPH_outer_nocolumn_vec[outer_i].x,temp_sPH_outer_nocolumn_vec[outer_i].y) * -1 : get_radius(temp_sPH_outer_nocolumn_vec[outer_i].x,temp_sPH_outer_nocolumn_vec[outer_i].y),
0788 zvtx, (temp_sPH_outer_nocolumn_vec[outer_i].phi > 180) ? get_radius(DCA_info_vec[1],DCA_info_vec[2]) * -1 : get_radius(DCA_info_vec[1],DCA_info_vec[2])
0789
0790 });
0791 good_comb_rz_vec.push_back({
0792 get_radius(temp_sPH_inner_nocolumn_vec[inner_i].x,temp_sPH_inner_nocolumn_vec[inner_i].y), temp_sPH_inner_nocolumn_vec[inner_i].z,
0793 get_radius(temp_sPH_outer_nocolumn_vec[outer_i].x,temp_sPH_outer_nocolumn_vec[outer_i].y), temp_sPH_outer_nocolumn_vec[outer_i].z,
0794 });
0795
0796 good_comb_xy_vec.push_back({
0797 temp_sPH_inner_nocolumn_vec[inner_i].x, temp_sPH_inner_nocolumn_vec[inner_i].y,
0798 temp_sPH_outer_nocolumn_vec[outer_i].x, temp_sPH_outer_nocolumn_vec[outer_i].y
0799 });
0800
0801 good_comb_phi_vec.push_back({
0802 temp_sPH_inner_nocolumn_vec[inner_i].phi,
0803 temp_sPH_outer_nocolumn_vec[outer_i].phi
0804 });
0805
0806 DCA_tag = true;
0807 }
0808
0809
0810 DCA_point -> Fill( DCA_info_vec[1], DCA_info_vec[2] );
0811 angle_correlation -> Fill(temp_sPH_inner_nocolumn_vec[inner_i].phi,temp_sPH_outer_nocolumn_vec[outer_i].phi);
0812 z_pos_diff -> Fill( temp_sPH_inner_nocolumn_vec[inner_i].z - temp_sPH_outer_nocolumn_vec[outer_i].z );
0813 z_pos_diff_angle_diff -> Fill( temp_sPH_inner_nocolumn_vec[inner_i].z - temp_sPH_outer_nocolumn_vec[outer_i].z, temp_sPH_inner_nocolumn_vec[inner_i].phi - temp_sPH_outer_nocolumn_vec[outer_i].phi );
0814 Nhits_good -> Fill(N_hits);
0815 z_pos_inner -> Fill(temp_sPH_inner_nocolumn_vec[inner_i].z);
0816 z_pos_outer -> Fill(temp_sPH_outer_nocolumn_vec[outer_i].z);
0817 z_pos_inner_outer -> Fill(temp_sPH_inner_nocolumn_vec[inner_i].z, temp_sPH_outer_nocolumn_vec[outer_i].z);
0818
0819
0820 DCA_distance_inner_phi -> Fill(temp_sPH_inner_nocolumn_vec[inner_i].phi, DCA_sign );
0821 DCA_distance_outer_phi -> Fill(temp_sPH_outer_nocolumn_vec[outer_i].phi, DCA_sign );
0822
0823 if(DCA_tag == true) break;
0824
0825
0826 }
0827
0828
0829 }
0830 }
0831
0832 if (temp_event_zvtx_vec.size() > zvtx_cal_require)
0833 {
0834
0835 temp_event_zvtx_info = sigmaEff_avg(temp_event_zvtx_vec,Integrate_portion);
0836 avg_event_zvtx -> Fill(temp_event_zvtx_info[0]);
0837 avg_event_zvtx_vec.push_back(temp_event_zvtx_info[0]);
0838
0839 zvtx_evt_width -> Fill(fabs(temp_event_zvtx_info[1] - temp_event_zvtx_info[2]));
0840
0841
0842
0843
0844
0845
0846
0847
0848
0849
0850 if ( fabs(temp_event_zvtx_info[0] - mean_zvtx) < 25 && fabs(temp_event_zvtx_info[1] - temp_event_zvtx_info[2]) < 60 ) {
0851
0852 N_good_event += 1;
0853
0854 cout<<"test : "<<N_hits<<" Ncluster : "<<(temp_sPH_inner_nocolumn_vec.size() + temp_sPH_outer_nocolumn_vec.size())<<" N good track : "<<good_comb_rz_vec.size()<<" temp_event_zvtx_vec size : "<<temp_event_zvtx_vec.size()<<endl;
0855
0856 c4 -> cd();
0857 Good_track_space -> Draw();
0858
0859
0860 for (int track_i = 0; track_i < good_comb_rz_vec.size(); track_i++){
0861
0862
0863 if (good_track_rz_vec[track_i][2] > temp_event_zvtx_info[1] && good_track_rz_vec[track_i][2] < temp_event_zvtx_info[2]){
0864
0865 double track_eta = Get_eta(
0866 { sqrt(pow(beam_origin.first,2)+pow(beam_origin.second,2)), temp_event_zvtx_info[0], fabs(temp_event_zvtx_info[1] - temp_event_zvtx_info[2])/2. },
0867 { good_comb_rz_vec[track_i][0], good_comb_rz_vec[track_i][1] },
0868 { good_comb_rz_vec[track_i][2], good_comb_rz_vec[track_i][3] }
0869 );
0870
0871 double track_eta_inner = Get_eta_2P(
0872 { sqrt(pow(beam_origin.first,2)+pow(beam_origin.second,2)), temp_event_zvtx_info[0], fabs(temp_event_zvtx_info[1] - temp_event_zvtx_info[2])/2. },
0873 { good_comb_rz_vec[track_i][0], good_comb_rz_vec[track_i][1] }
0874 );
0875
0876 double track_eta_outer = Get_eta_2P(
0877 { sqrt(pow(beam_origin.first,2)+pow(beam_origin.second,2)), temp_event_zvtx_info[0], fabs(temp_event_zvtx_info[1] - temp_event_zvtx_info[2])/2. },
0878 { good_comb_rz_vec[track_i][2], good_comb_rz_vec[track_i][3] }
0879 );
0880
0881 good_tracklet_rz.push_back({
0882 sqrt(pow(beam_origin.first,2)+pow(beam_origin.second,2)), temp_event_zvtx_info[0],
0883 good_comb_rz_vec[track_i][0], good_comb_rz_vec[track_i][1]
0884 });
0885
0886
0887 if (good_comb_rz_vec[track_i][1] < -130 ) { Good_inner_outer_pos_xy_nzB -> Fill(good_comb_xy_vec[track_i][0],good_comb_xy_vec[track_i][1]); }
0888
0889 else if (good_comb_rz_vec[track_i][1] < 0 ) { Good_inner_outer_pos_xy_nzA -> Fill(good_comb_xy_vec[track_i][0],good_comb_xy_vec[track_i][1]); }
0890
0891 else if (good_comb_rz_vec[track_i][1] < 130 ) { Good_inner_outer_pos_xy_pzA -> Fill(good_comb_xy_vec[track_i][0],good_comb_xy_vec[track_i][1]); }
0892
0893 else { Good_inner_outer_pos_xy_pzB -> Fill(good_comb_xy_vec[track_i][0],good_comb_xy_vec[track_i][1]); }
0894
0895
0896
0897 if (good_comb_rz_vec[track_i][3] < -130 ) { Good_inner_outer_pos_xy_nzB -> Fill(good_comb_xy_vec[track_i][2],good_comb_xy_vec[track_i][3]); }
0898
0899 else if (good_comb_rz_vec[track_i][3] < 0 ) { Good_inner_outer_pos_xy_nzA -> Fill(good_comb_xy_vec[track_i][2],good_comb_xy_vec[track_i][3]); }
0900
0901 else if (good_comb_rz_vec[track_i][3] < 130 ) { Good_inner_outer_pos_xy_pzA -> Fill(good_comb_xy_vec[track_i][2],good_comb_xy_vec[track_i][3]); }
0902
0903 else { Good_inner_outer_pos_xy_pzB -> Fill(good_comb_xy_vec[track_i][2],good_comb_xy_vec[track_i][3]); }
0904
0905
0906
0907 dNdeta_hist -> Fill(track_eta);
0908 if (good_comb_phi_vec[track_i][0] > 104 && good_comb_phi_vec[track_i][0] < 211) {
0909 dNdeta_2P_inner_hist -> Fill(track_eta_inner);
0910
0911 track_line -> DrawLine(temp_event_zvtx_info[0], sqrt(pow(beam_origin.first,2)+pow(beam_origin.second,2)), good_comb_rz_vec[track_i][1], good_comb_rz_vec[track_i][0]);
0912 }
0913
0914 if (good_comb_phi_vec[track_i][1] > 104 && good_comb_phi_vec[track_i][1] < 211) dNdeta_2P_outer_hist -> Fill(track_eta_outer);
0915
0916 }
0917
0918 }
0919
0920 c4 -> Print( Form("%s/folder_%s/good_track/good_track_%i.pdf",mother_folder_directory.c_str(),file_name.c_str(),event_i) );
0921 c4 -> Clear();
0922
0923 }
0924
0925
0926 }
0927
0928
0929
0930
0931 if ( zvtx_draw_requireL < temp_event_zvtx_vec.size() && draw_event_display == true && temp_event_zvtx_vec.size() > zvtx_cal_require)
0932 {
0933 TGraph * temp_event_xy = new TGraph(temp_sPH_nocolumn_vec[0].size(),&temp_sPH_nocolumn_vec[0][0],&temp_sPH_nocolumn_vec[1][0]);
0934 temp_event_xy -> SetTitle("INTT event display X-Y plane");
0935 temp_event_xy -> GetXaxis() -> SetLimits(-150,150);
0936 temp_event_xy -> GetYaxis() -> SetRangeUser(-150,150);
0937 temp_event_xy -> GetXaxis() -> SetTitle("X [mm]");
0938 temp_event_xy -> GetYaxis() -> SetTitle("Y [mm]");
0939 temp_event_xy -> SetMarkerStyle(20);
0940 temp_event_xy -> SetMarkerColor(2);
0941 temp_event_xy -> SetMarkerSize(1);
0942 TGraph * temp_event_rz = new TGraph(temp_sPH_nocolumn_rz_vec[0].size(),&temp_sPH_nocolumn_rz_vec[0][0],&temp_sPH_nocolumn_rz_vec[1][0]);
0943 temp_event_rz -> SetTitle("INTT event display r-Z plane");
0944 temp_event_rz -> GetXaxis() -> SetLimits(-500,500);
0945 temp_event_rz -> GetYaxis() -> SetRangeUser(-150,150);
0946 temp_event_rz -> GetXaxis() -> SetTitle("Z [mm]");
0947 temp_event_rz -> GetYaxis() -> SetTitle("Radius [mm]");
0948 temp_event_rz -> SetMarkerStyle(20);
0949 temp_event_rz -> SetMarkerColor(2);
0950 temp_event_rz -> SetMarkerSize(1);
0951
0952 pad_xy -> cd();
0953 temp_bkg(pad_xy, conversion_mode, peek, beam_origin);
0954 temp_event_xy -> Draw("p same");
0955 for (int track_i = 0; track_i < good_track_xy_vec.size(); track_i++){
0956 track_line -> DrawLine(good_track_xy_vec[track_i][0],good_track_xy_vec[track_i][1],good_track_xy_vec[track_i][2],good_track_xy_vec[track_i][3]);
0957 }
0958 track_line -> Draw("l same");
0959 draw_text -> DrawLatex(0.2, 0.85, Form("eID : %i, Total event hit : %i, innter Ncluster : %i, outer Ncluster : %i",event_i,N_hits,temp_sPH_inner_nocolumn_vec.size(),temp_sPH_outer_nocolumn_vec.size()));
0960
0961 pad_rz -> cd();
0962 temp_event_rz -> Draw("ap");
0963 effi_sig_range_line -> DrawLine(temp_event_zvtx_info[0],-150,temp_event_zvtx_info[0],150);
0964 coord_line -> DrawLine(0,-150,0,150);
0965 coord_line -> DrawLine(-500,0,500,0);
0966 for (int track_i = 0; track_i < good_track_rz_vec.size(); track_i++){
0967 track_line -> DrawLine(good_track_rz_vec[track_i][0],good_track_rz_vec[track_i][1],good_track_rz_vec[track_i][2],good_track_rz_vec[track_i][3]);
0968 }
0969 draw_text -> DrawLatex(0.2, 0.85, Form("Negative radius : Clu_{outer} > 180^{0}"));
0970 draw_text -> DrawLatex(0.2, 0.81, Form("EffiSig avg : %.2f mm",temp_event_zvtx_info[0]));
0971
0972 pad_z -> cd();
0973 temp_event_zvtx -> Draw("hist");
0974
0975
0976 effi_sig_range_line -> DrawLine(temp_event_zvtx_info[1],0,temp_event_zvtx_info[1],temp_event_zvtx -> GetMaximum()*1.05);
0977 effi_sig_range_line -> DrawLine(temp_event_zvtx_info[2],0,temp_event_zvtx_info[2],temp_event_zvtx -> GetMaximum()*1.05);
0978
0979 draw_text -> DrawLatex(0.2, 0.85, Form("eID : %i, Total event hit : %i, innter Ncluster : %i, outer Ncluster : %i",event_i,N_hits,temp_sPH_inner_nocolumn_vec.size(),temp_sPH_outer_nocolumn_vec.size()));
0980
0981 draw_text -> DrawLatex(0.2, 0.82, Form("EffiSig min : %.2f mm, max : %.2f mm",temp_event_zvtx_info[1],temp_event_zvtx_info[2]));
0982 draw_text -> DrawLatex(0.2, 0.79, Form("EffiSig avg : %.2f mm",temp_event_zvtx_info[0]));
0983
0984 if(draw_event_display && (event_i % print_rate) == 0){c2 -> Print(Form("%s/folder_%s/temp_event_display.pdf",mother_folder_directory.c_str(),file_name.c_str()));}
0985 pad_xy -> Clear();
0986 pad_rz -> Clear();
0987 pad_z -> Clear();
0988
0989 }
0990
0991 for ( int inner_i = 0; inner_i < temp_sPH_inner_nocolumn_vec.size(); inner_i++ )
0992 {
0993 inner_pos_xy -> Fill(temp_sPH_inner_nocolumn_vec[inner_i].x,temp_sPH_inner_nocolumn_vec[inner_i].y);
0994 inner_outer_pos_xy -> Fill(temp_sPH_inner_nocolumn_vec[inner_i].x,temp_sPH_inner_nocolumn_vec[inner_i].y);
0995 }
0996
0997 for ( int outer_i = 0; outer_i < temp_sPH_outer_nocolumn_vec.size(); outer_i++ )
0998 {
0999 outer_pos_xy -> Fill(temp_sPH_outer_nocolumn_vec[outer_i].x,temp_sPH_outer_nocolumn_vec[outer_i].y);
1000 inner_outer_pos_xy -> Fill(temp_sPH_outer_nocolumn_vec[outer_i].x,temp_sPH_outer_nocolumn_vec[outer_i].y);
1001 }
1002
1003 temp_event_zvtx_info = {-1000,-1000,-1000};
1004 temp_event_zvtx_vec.clear();
1005 temp_event_zvtx -> Reset("ICESM");
1006 good_track_xy_vec.clear();
1007 good_track_rz_vec.clear();
1008 good_comb_rz_vec.clear();
1009 good_comb_xy_vec.clear();
1010 good_comb_phi_vec.clear();
1011 temp_sPH_nocolumn_rz_vec.clear(); temp_sPH_nocolumn_rz_vec = vector<vector<double>>(2);
1012 temp_sPH_nocolumn_vec.clear(); temp_sPH_nocolumn_vec = vector<vector<double>>(2);
1013 temp_sPH_inner_nocolumn_vec.clear();
1014 temp_sPH_outer_nocolumn_vec.clear();
1015 }
1016
1017 if (draw_event_display) {c2 -> Print(Form("%s/folder_%s/temp_event_display.pdf)",mother_folder_directory.c_str(),file_name.c_str()));}
1018 c2 -> Clear();
1019 c1 -> Clear();
1020
1021
1022 c1 -> cd();
1023 vector<float> avg_event_zvtx_info = sigmaEff_avg(avg_event_zvtx_vec,Integrate_portion_final);
1024 avg_event_zvtx -> Draw("hist");
1025 effi_sig_range_line -> DrawLine(avg_event_zvtx_info[1],0,avg_event_zvtx_info[1],avg_event_zvtx -> GetMaximum()*1.05);
1026 effi_sig_range_line -> DrawLine(avg_event_zvtx_info[2],0,avg_event_zvtx_info[2],avg_event_zvtx -> GetMaximum()*1.05);
1027 draw_text -> DrawLatex(0.15, 0.84, Form("EffiSig min : %.2f mm, max : %.2f mm",avg_event_zvtx_info[1],avg_event_zvtx_info[2]));
1028 draw_text -> DrawLatex(0.15, 0.81, Form("EffiSig avg : %.2f mm",avg_event_zvtx_info[0]));
1029 c1 -> Print(Form("%s/folder_%s/avg_event_zvtx.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1030 c1 -> Clear();
1031
1032 zvtx_evt_width -> Draw("hist");
1033 c1 -> Print(Form("%s/folder_%s/zvtx_evt_width.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1034 c1 -> Clear();
1035
1036 N_cluster_inner_pass -> Draw("hist");
1037 c1 -> Print(Form("%s/folder_%s/N_cluster_inner_pass.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1038 c1 -> Clear();
1039
1040 N_cluster_outer_pass -> Draw("hist");
1041 c1 -> Print(Form("%s/folder_%s/N_cluster_outer_pass.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1042 c1 -> Clear();
1043
1044 N_cluster_correlation -> Draw("colz0");
1045 c1 -> Print(Form("%s/folder_%s/N_cluster_correlation.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1046 c1 -> Clear();
1047
1048 DCA_point -> Draw("colz0");
1049 c1 -> Print(Form("%s/folder_%s/DCA_point_X%.1fY%.1f_.pdf",mother_folder_directory.c_str(),file_name.c_str(),beam_origin.first,beam_origin.second));
1050 c1 -> Clear();
1051
1052 DCA_distance_inner_phi -> Draw("colz0");
1053 c1 -> Print(Form("%s/folder_%s/DCA_distance_inner_phi_X%.1fY%.1f_.pdf",mother_folder_directory.c_str(),file_name.c_str(),beam_origin.first,beam_origin.second));
1054 c1 -> Clear();
1055
1056 DCA_distance_outer_phi -> Draw("colz0");
1057 c1 -> Print(Form("%s/folder_%s/DCA_distance_outer_phi_X%.1fY%.1f_.pdf",mother_folder_directory.c_str(),file_name.c_str(),beam_origin.first,beam_origin.second));
1058 c1 -> Clear();
1059
1060 z_pos_inner_outer -> Draw("colz0");
1061 c1 -> Print(Form("%s/folder_%s/z_pos_inner_outer.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1062 c1 -> Clear();
1063
1064 z_pos_inner -> Draw("hist");
1065 c1 -> Print(Form("%s/folder_%s/z_pos_inner.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1066 c1 -> Clear();
1067
1068 z_pos_outer -> Draw("hist");
1069 c1 -> Print(Form("%s/folder_%s/z_pos_outer.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1070 c1 -> Clear();
1071
1072 Nhits_good -> Draw("hist");
1073 c1 -> Print(Form("%s/folder_%s/Nhits_good.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1074 c1 -> Clear();
1075
1076 angle_correlation -> Draw("colz0");
1077 c1 -> Print(Form("%s/folder_%s/angle_correlation.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1078 c1 -> Clear();
1079
1080 z_pos_diff -> Draw("hist");
1081 c1 -> Print(Form("%s/folder_%s/z_pos_diff.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1082 c1 -> Clear();
1083
1084 z_pos_diff_angle_diff -> Draw("colz0");
1085 c1 -> Print(Form("%s/folder_%s/z_pos_diff_angle_diff.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1086 c1 -> Clear();
1087
1088 inner_pos_xy -> Draw("colz0");
1089 c1 -> Print(Form("%s/folder_%s/inner_pos_xy.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1090 c1 -> Clear();
1091
1092 outer_pos_xy -> Draw("colz0");
1093 c1 -> Print(Form("%s/folder_%s/outer_pos_xy.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1094 c1 -> Clear();
1095
1096 inner_outer_pos_xy -> Draw("colz0");
1097 c1 -> Print(Form("%s/folder_%s/inner_outer_pos_xy.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1098 c1 -> Clear();
1099
1100 Good_inner_outer_pos_xy_nzB-> Draw("colz0");
1101 c1 -> Print(Form("%s/folder_%s/Good_inner_outer_pos_xy_nzB.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1102 c1 -> Clear();
1103 Good_inner_outer_pos_xy_nzA-> Draw("colz0");
1104 c1 -> Print(Form("%s/folder_%s/Good_inner_outer_pos_xy_nzA.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1105 c1 -> Clear();
1106 Good_inner_outer_pos_xy_pzA-> Draw("colz0");
1107 c1 -> Print(Form("%s/folder_%s/Good_inner_outer_pos_xy_pzA.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1108 c1 -> Clear();
1109 Good_inner_outer_pos_xy_pzB-> Draw("colz0");
1110 c1 -> Print(Form("%s/folder_%s/Good_inner_outer_pos_xy_pzB.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1111 c1 -> Clear();
1112
1113 Good_track_space -> Draw("");
1114 for (int i = 0; i < good_tracklet_rz.size(); i++){
1115 track_line -> DrawLine(good_tracklet_rz[i][1],good_tracklet_rz[i][0],good_tracklet_rz[i][3],good_tracklet_rz[i][2]);
1116 }
1117 c1 -> Print(Form("%s/folder_%s/good_tracklet_rz.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1118 c1 -> Clear();
1119
1120
1121 dNdeta_hist -> Scale(1./double(N_good_event));
1122 dNdeta_hist -> GetYaxis() -> SetRangeUser(0,dNdeta_upper_range);
1123 dNdeta_2P_inner_hist -> Scale(1./double(N_good_event));
1124 dNdeta_2P_inner_hist -> GetYaxis() -> SetRangeUser(0,dNdeta_upper_range);
1125 dNdeta_2P_outer_hist -> Scale(1./double(N_good_event));
1126 dNdeta_2P_outer_hist -> GetYaxis() -> SetRangeUser(0,dNdeta_upper_range);
1127
1128 cout<<" final N good event : "<<N_good_event<<" N event with correct hit : "<<N_event_pass_number<<endl;
1129
1130
1131 TCanvas * c3 = new TCanvas("c3","c3",900,800); c3 -> cd();
1132 TPad *pad_obj = new TPad(Form("pad_obj"), "", 0.0, 0.0, 1.0, 1.0);
1133 Characterize_Pad(pad_obj, 0.18, 0.1, 0.1, 0.12, 0, 0);
1134 pad_obj -> SetTicks(1,1);
1135 pad_obj -> Draw();
1136 pad_obj -> cd();
1137
1138 SetsPhenixStyle();
1139 dNdeta_hist -> Draw("ep");
1140
1141
1142 TLatex *ltx = new TLatex();
1143 ltx->SetNDC();
1144 ltx->SetTextSize(0.045);
1145 ltx->DrawLatex(gPad->GetLeftMargin(), 1 - gPad->GetTopMargin() + 0.01, "#it{#bf{sPHENIX INTT}} Work-in-progress");
1146 ltx->DrawLatex(0.48, 0.835, "Run 20869");
1147 ltx->DrawLatex(0.48, 0.785, "Au+Au #sqrt{s_{NN}} = 200 GeV");
1148 c3 -> Print(Form("%s/folder_%s/dNdeta.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1149 pad_obj -> Clear();
1150
1151 pad_obj -> cd();
1152 dNdeta_2P_inner_hist -> Draw("ep");
1153 ltx->DrawLatex(gPad->GetLeftMargin(), 1 - gPad->GetTopMargin() + 0.01, "#it{#bf{sPHENIX INTT}} Work-in-progress");
1154 ltx->DrawLatex(0.38, 0.835, "Run 20869");
1155 ltx->DrawLatex(0.38, 0.785, "Au+Au #sqrt{s_{NN}} = 200 GeV");
1156 ltx->DrawLatex(0.38, 0.735, "Tracklet : vertex + inner cluster");
1157 c3 -> Print(Form("%s/folder_%s/dNdeta_2P_inner.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1158 pad_obj -> Clear();
1159
1160 pad_obj -> cd();
1161 dNdeta_2P_outer_hist -> Draw("ep");
1162 ltx->DrawLatex(gPad->GetLeftMargin(), 1 - gPad->GetTopMargin() + 0.01, "#it{#bf{sPHENIX INTT}} Work-in-progress");
1163 ltx->DrawLatex(0.38, 0.835, "Run 20869");
1164 ltx->DrawLatex(0.38, 0.785, "Au+Au #sqrt{s_{NN}} = 200 GeV");
1165 ltx->DrawLatex(0.38, 0.735, "Tracklet : vertex + outer cluster");
1166 c3 -> Print(Form("%s/folder_%s/dNdeta_2P_outer.pdf",mother_folder_directory.c_str(),file_name.c_str()));
1167 pad_obj -> Clear();
1168
1169
1170
1171
1172 }