File indexing completed on 2025-08-05 08:15:28
0001
0002 #include <uspin/SpinDBInput.h>
0003 #include <uspin/SpinDBOutput.h>
0004 #include "sPhenixStyle.C"
0005 R__LOAD_LIBRARY(libuspin.so)
0006
0007 float ZDC1CUT = 100;
0008 float ZDC2CUT = 15;
0009 float VETOCUT = 150;
0010 bool ismerged = true;
0011 bool isflipON = true;
0012 void drawBunchBunch(const std::string infile = "store34485/store34485-2.root", int storenumber = 34485, int runnumber = 42797)
0013 {
0014 SetsPhenixStyle();
0015 TFile *f = new TFile(infile.c_str());
0016
0017
0018 TH1D *n_smd_L = new TH1D("n_smd_L", "n_smd_L", 128, 0, 128);
0019 TH1D *n_smd_R = new TH1D("n_smd_R", "n_smd_R", 128, 0, 128);
0020 TH1D *s_smd_L = new TH1D("s_smd_L", "s_smd_L", 128, 0, 128);
0021 TH1D *s_smd_R = new TH1D("s_smd_R", "s_smd_R", 128, 0, 128);
0022
0023 TH1D *n_smd_U = new TH1D("n_smd_U", "n_smd_U", 128, 0, 128);
0024 TH1D *n_smd_D = new TH1D("n_smd_D", "n_smd_D", 128, 0, 128);
0025 TH1D *s_smd_U = new TH1D("s_smd_U", "s_smd_U", 128, 0, 128);
0026 TH1D *s_smd_D = new TH1D("s_smd_D", "s_smd_D", 128, 0, 128);
0027
0028
0029
0030
0031 TTree *smdHits = (TTree *) f->Get("smdHits");
0032 int bunchnumber, showerCutN, showerCutS;
0033 float n_x, n_y, s_x, s_y;
0034 float zdcN1_adc, zdcN2_adc, veto_NF, veto_NB;
0035 float zdcS1_adc, zdcS2_adc, veto_SF, veto_SB;
0036 float smdS1_adc, smdS2_adc, smdS6_adc, smdS7_adc;
0037 float smdN1_adc, smdN2_adc, smdN6_adc, smdN7_adc;
0038 float smdS1_v_adc, smdS2_v_adc, smdS7_v_adc, smdS8_v_adc;
0039 float smdN1_v_adc, smdN2_v_adc, smdN7_v_adc, smdN8_v_adc;
0040 smdHits->SetBranchAddress("bunchnumber", &bunchnumber);
0041 smdHits->SetBranchAddress("showerCutN", &showerCutN);
0042 smdHits->SetBranchAddress("showerCutS", &showerCutS);
0043 smdHits->SetBranchAddress("n_x", &n_x);
0044 smdHits->SetBranchAddress("n_y", &n_y);
0045 smdHits->SetBranchAddress("s_x", &s_x);
0046 smdHits->SetBranchAddress("s_y", &s_y);
0047 smdHits->SetBranchAddress("zdcN1_adc", &zdcN1_adc);
0048 smdHits->SetBranchAddress("zdcN2_adc", &zdcN2_adc);
0049 smdHits->SetBranchAddress("zdcS1_adc", &zdcS1_adc);
0050 smdHits->SetBranchAddress("zdcS2_adc", &zdcS2_adc);
0051 smdHits->SetBranchAddress("veto_NF", &veto_NF);
0052 smdHits->SetBranchAddress("veto_NB", &veto_NB);
0053 smdHits->SetBranchAddress("veto_SF", &veto_SF);
0054 smdHits->SetBranchAddress("veto_SB", &veto_SB);
0055
0056
0057
0058 smdHits -> SetBranchAddress ("smdN1_adc", &smdN1_adc);
0059 smdHits -> SetBranchAddress ("smdN2_adc", &smdN2_adc);
0060 smdHits -> SetBranchAddress ("smdN6_adc", &smdN6_adc);
0061 smdHits -> SetBranchAddress ("smdN7_adc", &smdN7_adc);
0062 smdHits -> SetBranchAddress ("smdS1_adc", &smdS1_adc);
0063 smdHits -> SetBranchAddress ("smdS2_adc", &smdS2_adc);
0064 smdHits -> SetBranchAddress ("smdS6_adc", &smdS6_adc);
0065 smdHits -> SetBranchAddress ("smdS7_adc", &smdS7_adc);
0066 smdHits -> SetBranchAddress ("smdN1_v_adc", &smdN1_v_adc);
0067 smdHits -> SetBranchAddress ("smdN2_v_adc", &smdN2_v_adc);
0068 smdHits -> SetBranchAddress ("smdN7_v_adc", &smdN7_v_adc);
0069 smdHits -> SetBranchAddress ("smdN8_v_adc", &smdN8_v_adc);
0070 smdHits -> SetBranchAddress ("smdS1_v_adc", &smdS1_v_adc);
0071 smdHits -> SetBranchAddress ("smdS2_v_adc", &smdS2_v_adc);
0072 smdHits -> SetBranchAddress ("smdS7_v_adc", &smdS7_v_adc);
0073 smdHits -> SetBranchAddress ("smdS8_v_adc", &smdS8_v_adc);
0074
0075
0076
0077
0078 smdHits->SetBranchStatus("zdcN3_adc",0);
0079 smdHits->SetBranchStatus("zdcS3_adc",0);
0080 int nentries = smdHits->GetEntries();
0081
0082
0083
0084 unsigned int qa_level = 0xffff;
0085 SpinDBOutput spin_out("phnxrc");
0086 SpinDBContent spin_cont;
0087 spin_out.StoreDBContent(runnumber, runnumber, qa_level);
0088 spin_out.GetDBContentStore(spin_cont, runnumber);
0089
0090 int crossingshift = spin_cont.GetCrossingShift();
0091
0092
0093
0094 std::cout << crossingshift << std::endl;
0095
0096 int bspinpat[120] = {0};
0097 int yspinpat[120] = {0};
0098 for (int i = 0; i < 120; i++)
0099 {
0100 bspinpat[i] = spin_cont.GetSpinPatternBlue(i);
0101 yspinpat[i] = spin_cont.GetSpinPatternYellow(i);
0102 if(isflipON)
0103 {
0104 bspinpat[i]*=-1;
0105 yspinpat[i]*=-1;
0106 }
0107 }
0108
0109
0110
0111 int bpat[120] = {0};
0112 int ypat[120] = {0};
0113 std::string preset_pattern_blue[8];
0114 std::string preset_pattern_yellow[8];
0115 preset_pattern_blue[0] = "+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+*********";
0116 preset_pattern_blue[1] = "-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-*********";
0117 preset_pattern_blue[2] = "+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+*********";
0118 preset_pattern_blue[3] = "-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-*********";
0119 preset_pattern_blue[4] = "++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++-*********";
0120 preset_pattern_blue[5] = "--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--+*********";
0121 preset_pattern_blue[6] = "++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++-*********";
0122 preset_pattern_blue[7] = "--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--+*********";
0123
0124 preset_pattern_yellow[0] = "++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++-*********";
0125 preset_pattern_yellow[1] = "++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++-*********";
0126 preset_pattern_yellow[2] = "--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--+*********";
0127 preset_pattern_yellow[3] = "--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--+*********";
0128 preset_pattern_yellow[4] = "+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+*********";
0129 preset_pattern_yellow[5] = "+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+--+-++-+-+-+--+-+-+-++-+*********";
0130 preset_pattern_yellow[6] = "-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-*********";
0131 preset_pattern_yellow[7] = "-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-*********";
0132
0133 int spinpatternNo = 3;
0134 if (storenumber == 34485)
0135 {
0136 spinpatternNo = 3;
0137 }
0138
0139 for (int i = 0; i < 120; i++)
0140 {
0141 if (preset_pattern_blue[spinpatternNo].at(i) == '+')
0142 {
0143 bpat[i] = 1;
0144 }
0145 else if (preset_pattern_blue[spinpatternNo].at(i) == '-')
0146 {
0147 bpat[i] = -1;
0148 }
0149 else if (preset_pattern_blue[spinpatternNo].at(i) == '*')
0150 {
0151 bpat[i] = 10;
0152 }
0153
0154 if (preset_pattern_yellow[spinpatternNo].at(i) == '+')
0155 {
0156 ypat[i] = 1;
0157 }
0158 else if (preset_pattern_yellow[spinpatternNo].at(i) == '-')
0159 {
0160 ypat[i] = -1;
0161 }
0162 else if (preset_pattern_yellow[spinpatternNo].at(i) == '*')
0163 {
0164 ypat[i] = 10;
0165 }
0166 }
0167
0168
0169
0170 std::cout << nentries << std::endl;
0171
0172 int clockOffset = 1;
0173
0174
0175 for (int i = 0; i < nentries - clockOffset; i++)
0176 {
0177 if (i % 1000000 == 0)
0178 {
0179 std::cout << "Entry: " << i << std::endl;
0180 }
0181 smdHits->GetEntry(i + clockOffset);
0182
0183 int sphenix_cross = (bunchnumber + crossingshift) % 120;
0184
0185 smdHits->GetEntry(i);
0186
0187 int bspin = bspinpat[sphenix_cross];
0188 int yspin = yspinpat[sphenix_cross];
0189
0190
0191
0192 if (zdcN1_adc > ZDC1CUT && zdcN2_adc > ZDC2CUT && veto_NF < VETOCUT && veto_NB < VETOCUT && showerCutN == 1)
0193 {
0194 if (smdN1_adc > 100. && smdN2_adc > 100.)
0195 {
0196 n_smd_L->Fill(sphenix_cross);
0197 }
0198 if (smdN6_adc > 100. && smdN7_adc > 100.)
0199 n_smd_R->Fill(sphenix_cross);
0200 if (smdN1_v_adc > 100. && smdN2_v_adc > 100.)
0201 {
0202 n_smd_D->Fill(sphenix_cross);
0203 }
0204 if (smdN7_v_adc > 100. && smdN8_v_adc > 100.)
0205 {
0206 n_smd_U->Fill(sphenix_cross);
0207 }
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225 }
0226
0227 if (zdcS1_adc > ZDC1CUT && zdcS2_adc > ZDC2CUT && veto_SF < VETOCUT && veto_SB < VETOCUT && showerCutS == 1)
0228 {
0229 if (smdS1_adc > 100. && smdS2_adc > 100.)
0230 {
0231 s_smd_L->Fill(sphenix_cross);
0232 }
0233 if (smdS6_adc > 100. && smdS7_adc > 100.)
0234 s_smd_R->Fill(sphenix_cross);
0235 if (smdS1_v_adc > 100. && smdS2_v_adc > 100.)
0236 {
0237 s_smd_D->Fill(sphenix_cross);
0238 }
0239 if (smdS7_v_adc > 100. && smdS8_v_adc > 100.)
0240 {
0241 s_smd_U->Fill(sphenix_cross);
0242 }
0243
0244
0245
0246
0247
0248
0249
0250
0251
0252
0253
0254
0255
0256
0257
0258
0259
0260 }
0261 }
0262
0263
0264 std::vector<double> x_spinup_blueUD, y_spinup_blueUD, ex_spinup_blueUD, ey_spinup_blueUD;
0265 std::vector<double> x_spindown_blueUD, y_spindown_blueUD, ex_spindown_blueUD, ey_spindown_blueUD;
0266 std::vector<double> x_spinup_yellowUD, y_spinup_yellowUD, ex_spinup_yellowUD, ey_spinup_yellowUD;
0267 std::vector<double> x_spindown_yellowUD, y_spindown_yellowUD, ex_spindown_yellowUD, ey_spindown_yellowUD;
0268
0269 for (int i = 1; i <= 115; ++i)
0270 {
0271 double A = n_smd_U->GetBinContent(i);
0272 double B = n_smd_D->GetBinContent(i);
0273 double A_y = s_smd_U->GetBinContent(i);
0274 double B_y = s_smd_D->GetBinContent(i);
0275 std::cout << "A : " << A << " //// B : " << B << std::endl;
0276 int nbunch = i - 1;
0277 int b_spin = bspinpat[nbunch];
0278 int y_spin = yspinpat[nbunch];
0279 if (b_spin != 1 && b_spin != -1)
0280 continue;
0281 if (A != 0 || B != 0)
0282 {
0283 double aym = (A - B) / (A + B);
0284 double error = TMath::Sqrt(4 * (A * B) / ((A + B) * (A + B) * (A + B)));
0285 if (b_spin == 1)
0286 {
0287 x_spinup_blueUD.push_back(nbunch);
0288 y_spinup_blueUD.push_back(aym);
0289 ex_spinup_blueUD.push_back(0);
0290 ey_spinup_blueUD.push_back(error);
0291 }
0292 else if (b_spin == -1)
0293 {
0294 x_spindown_blueUD.push_back(nbunch);
0295 y_spindown_blueUD.push_back(aym);
0296 ex_spindown_blueUD.push_back(0);
0297 ey_spindown_blueUD.push_back(error);
0298 }
0299 }
0300 if (A_y != 0 || B_y != 0)
0301 {
0302 double aym = (A_y - B_y) / (A_y + B_y);
0303 double error = TMath::Sqrt(4 * (A_y * B_y) / ((A_y + B_y) * (A_y + B_y) * (A_y + B_y)));
0304 if (y_spin == 1)
0305 {
0306 x_spinup_yellowUD.push_back(nbunch);
0307 y_spinup_yellowUD.push_back(aym);
0308 ex_spinup_yellowUD.push_back(0);
0309 ey_spinup_yellowUD.push_back(error);
0310 }
0311 else if (y_spin == -1)
0312 {
0313 x_spindown_yellowUD.push_back(nbunch);
0314 y_spindown_yellowUD.push_back(aym);
0315 ex_spindown_yellowUD.push_back(0);
0316 ey_spindown_yellowUD.push_back(error);
0317 }
0318 }
0319 }
0320
0321 std::vector<double> x_spinup_blue, y_spinup_blue, ex_spinup_blue, ey_spinup_blue;
0322 std::vector<double> x_spindown_blue, y_spindown_blue, ex_spindown_blue, ey_spindown_blue;
0323 std::vector<double> x_spinup_yellow, y_spinup_yellow, ex_spinup_yellow, ey_spinup_yellow;
0324 std::vector<double> x_spindown_yellow, y_spindown_yellow, ex_spindown_yellow, ey_spindown_yellow;
0325
0326 int nBins = n_smd_L->GetNbinsX();
0327 for (int i = 1; i <= 115; ++i)
0328 {
0329 double A = n_smd_L->GetBinContent(i);
0330 double B = n_smd_R->GetBinContent(i);
0331 double A_y = s_smd_L->GetBinContent(i);
0332 double B_y = s_smd_R->GetBinContent(i);
0333 std::cout << "A : " << A << " //// B : " << B << std::endl;
0334 int nbunch = i - 1;
0335 int b_spin = bspinpat[nbunch];
0336 int y_spin = yspinpat[nbunch];
0337 if (b_spin != 1 && b_spin != -1)
0338 continue;
0339 if (A != 0 || B != 0)
0340 {
0341 double aym = (A - B) / (A + B);
0342 double error = TMath::Sqrt(4 * (A * B) / ((A + B) * (A + B) * (A + B)));
0343 if (b_spin == 1)
0344 {
0345 x_spinup_blue.push_back(nbunch);
0346 y_spinup_blue.push_back(aym);
0347 ex_spinup_blue.push_back(0);
0348 ey_spinup_blue.push_back(error);
0349 }
0350 else if (b_spin == -1)
0351 {
0352 x_spindown_blue.push_back(nbunch);
0353 y_spindown_blue.push_back(aym);
0354 ex_spindown_blue.push_back(0);
0355 ey_spindown_blue.push_back(error);
0356 }
0357 }
0358 if (A_y != 0 || B_y != 0)
0359 {
0360 double aym = (A_y - B_y) / (A_y + B_y);
0361 double error = TMath::Sqrt(4 * (A_y * B_y) / ((A_y + B_y) * (A_y + B_y) * (A_y + B_y)));
0362 if (y_spin == 1)
0363 {
0364 x_spinup_yellow.push_back(nbunch);
0365 y_spinup_yellow.push_back(aym);
0366 ex_spinup_yellow.push_back(0);
0367 ey_spinup_yellow.push_back(error);
0368 }
0369 else if (y_spin == -1)
0370 {
0371 x_spindown_yellow.push_back(nbunch);
0372 y_spindown_yellow.push_back(aym);
0373 ex_spindown_yellow.push_back(0);
0374 ey_spindown_yellow.push_back(error);
0375 }
0376 }
0377 }
0378
0379
0380 TGraphErrors *graph_spinup_blueUD = new TGraphErrors(x_spinup_blueUD.size(), x_spinup_blueUD.data(), y_spinup_blueUD.data(), ex_spinup_blueUD.data(), ey_spinup_blueUD.data());
0381 graph_spinup_blueUD->SetMarkerStyle(21);
0382 graph_spinup_blueUD->SetTitle("SMD North Up Down asymmetry");
0383 graph_spinup_blueUD->SetMarkerColor(kRed);
0384 graph_spinup_blueUD->SetLineColor(kRed);
0385
0386
0387 TGraphErrors *graph_spindown_blueUD = new TGraphErrors(x_spindown_blueUD.size(), x_spindown_blueUD.data(), y_spindown_blueUD.data(), ex_spindown_blueUD.data(), ey_spindown_blueUD.data());
0388 graph_spindown_blueUD->SetMarkerStyle(21);
0389 graph_spindown_blueUD->SetTitle("SMD North Up Down asymmetry");
0390 graph_spindown_blueUD->SetMarkerColor(kBlue);
0391 graph_spindown_blueUD->SetLineColor(kBlue);
0392
0393
0394 TGraphErrors *graph_spinup_yellowUD = new TGraphErrors(x_spinup_yellowUD.size(), x_spinup_yellowUD.data(), y_spinup_yellowUD.data(), ex_spinup_yellowUD.data(), ey_spinup_yellowUD.data());
0395 graph_spinup_yellowUD->SetMarkerStyle(21);
0396 graph_spinup_yellowUD->SetTitle("SMD South Up Down asymmetry");
0397 graph_spinup_yellowUD->SetMarkerColor(kRed);
0398 graph_spinup_yellowUD->SetLineColor(kRed);
0399
0400
0401 TGraphErrors *graph_spindown_yellowUD = new TGraphErrors(x_spindown_yellowUD.size(), x_spindown_yellowUD.data(), y_spindown_yellowUD.data(), ex_spindown_yellowUD.data(), ey_spindown_yellowUD.data());
0402 graph_spindown_yellowUD->SetMarkerStyle(21);
0403 graph_spindown_yellowUD->SetTitle("SMD South Up Down asymmetry ");
0404 graph_spindown_yellowUD->SetMarkerColor(kBlue);
0405 graph_spindown_yellowUD->SetLineColor(kBlue);
0406
0407
0408 TGraphErrors *graph_spinup_blue = new TGraphErrors(x_spinup_blue.size(), x_spinup_blue.data(), y_spinup_blue.data(), ex_spinup_blue.data(), ey_spinup_blue.data());
0409 graph_spinup_blue->SetMarkerStyle(21);
0410 graph_spinup_blue->SetTitle("SMD North Left Right asymmetry");
0411 graph_spinup_blue->SetMarkerColor(kRed);
0412 graph_spinup_blue->SetLineColor(kRed);
0413
0414
0415 TGraphErrors *graph_spindown_blue = new TGraphErrors(x_spindown_blue.size(), x_spindown_blue.data(), y_spindown_blue.data(), ex_spindown_blue.data(), ey_spindown_blue.data());
0416 graph_spindown_blue->SetMarkerStyle(21);
0417 graph_spindown_blue->SetTitle("SMD North Left Right asymmetry");
0418 graph_spindown_blue->SetMarkerColor(kBlue);
0419 graph_spindown_blue->SetLineColor(kBlue);
0420
0421
0422 TGraphErrors *graph_spinup_yellow = new TGraphErrors(x_spinup_yellow.size(), x_spinup_yellow.data(), y_spinup_yellow.data(), ex_spinup_yellow.data(), ey_spinup_yellow.data());
0423 graph_spinup_yellow->SetMarkerStyle(21);
0424 graph_spinup_yellow->SetTitle("SMD South Left Right asymmetry");
0425 graph_spinup_yellow->SetMarkerColor(kRed);
0426 graph_spinup_yellow->SetLineColor(kRed);
0427
0428
0429 TGraphErrors *graph_spindown_yellow = new TGraphErrors(x_spindown_yellow.size(), x_spindown_yellow.data(), y_spindown_yellow.data(), ex_spindown_yellow.data(), ey_spindown_yellow.data());
0430 graph_spindown_yellow->SetMarkerStyle(21);
0431 graph_spindown_yellow->SetTitle("SMD South Left Right asymmetry ");
0432 graph_spindown_yellow->SetMarkerColor(kBlue);
0433 graph_spindown_yellow->SetLineColor(kBlue);
0434
0435 TLatex *latex = new TLatex();
0436 latex->SetNDC();
0437 latex->SetTextSize(0.045);
0438 latex->SetTextAlign(31);
0439 TCanvas *canvas = new TCanvas("canvas_blue", "North SMD", 950, 800);
0440 graph_spinup_blue->GetXaxis()->SetLimits(0, 111);
0441 graph_spinup_blue->GetYaxis()->SetTitle("(L-R)/(L+R)");
0442 graph_spinup_blue->GetXaxis()->SetTitle("Bunch number");
0443 graph_spinup_blue->SetMinimum(-0.08);
0444 graph_spinup_blue->SetMaximum(0.02);
0445 canvas->cd();
0446 graph_spinup_blue->Draw("AP");
0447 graph_spindown_blue->Draw("P SAME");
0448 TFitResultPtr fit_spinup_blue = graph_spinup_blue->Fit("pol0", "S");
0449 TFitResultPtr fit_spindown_blue = graph_spindown_blue->Fit("pol0", "S");
0450
0451 TLegend leg1(.20, .70, .60, .90);
0452 leg1.AddEntry((TObject *) 0, Form("SMD North / Run 42796+42797"), "");
0453 leg1.AddEntry(graph_spinup_blue, Form("blue #uparrow : %.5f #pm %.5f", fit_spinup_blue->Parameter(0), fit_spinup_blue->ParError(0)), "LP");
0454 leg1.AddEntry(graph_spindown_blue, Form("blue #downarrow : %.5f #pm %.5f", fit_spindown_blue->Parameter(0), fit_spindown_blue->ParError(0)), "LP");
0455 leg1.SetTextSize(0.03);
0456 leg1.Draw();
0457 latex->DrawLatex(1 - gPad->GetRightMargin(), 1 - gPad->GetTopMargin() + 0.01, Form("#it{p+p}, 200 GeV #it{#bf{sPHENIX}} internal"));
0458
0459 TCanvas *canvas2 = new TCanvas("canvas_blueUD", "North SMD UD", 950, 800);
0460 graph_spinup_blueUD->GetXaxis()->SetLimits(0, 111);
0461 graph_spinup_blueUD->GetYaxis()->SetTitle("(U-D)/(U+D)");
0462 graph_spinup_blueUD->GetXaxis()->SetTitle("Bunch number");
0463 graph_spinup_blueUD->SetMinimum(0.18);
0464 graph_spinup_blueUD->SetMaximum(0.18+0.1);
0465 canvas2->cd();
0466 graph_spinup_blueUD->Draw("AP");
0467 graph_spindown_blueUD->Draw("P SAME");
0468
0469 TFitResultPtr fit_spinup_blueUD = graph_spinup_blueUD->Fit("pol0", "S");
0470 TFitResultPtr fit_spindown_blueUD = graph_spindown_blueUD->Fit("pol0", "S");
0471 TLegend leg2(.20, .70, .60, .90);
0472 leg2.AddEntry((TObject *) 0, Form("SMD North / Run 42796+42797"), "");
0473 leg2.AddEntry(graph_spinup_blueUD, Form("blue #uparrow : %.5f #pm %.5f", fit_spinup_blueUD->Parameter(0), fit_spinup_blueUD->ParError(0)), "LP");
0474 leg2.AddEntry(graph_spindown_blueUD, Form("blue #downarrow : %.5f #pm %.5f", fit_spindown_blueUD->Parameter(0), fit_spindown_blueUD->ParError(0)), "LP");
0475 leg2.SetTextSize(0.03);
0476 leg2.Draw();
0477 latex->DrawLatex(1 - gPad->GetRightMargin(), 1 - gPad->GetTopMargin() + 0.01, Form("#it{p+p}, 200 GeV #it{#bf{sPHENIX}} internal"));
0478
0479 TCanvas *canvas3 = new TCanvas("canvas_yellow", "South SMD", 950, 800);
0480 graph_spinup_yellow->GetXaxis()->SetLimits(0, 111);
0481 graph_spinup_yellow->GetYaxis()->SetTitle("(L-R)/(L+R)");
0482 graph_spinup_yellow->GetXaxis()->SetTitle("Bunch number");
0483 graph_spinup_yellow->SetMaximum(0.07);
0484 graph_spinup_yellow->SetMinimum(-0.03);
0485 canvas3->cd();
0486 graph_spinup_yellow->Draw("AP");
0487 graph_spindown_yellow->Draw("P SAME");
0488
0489 TFitResultPtr fit_spinup_yellow = graph_spinup_yellow->Fit("pol0", "S");
0490 TFitResultPtr fit_spindown_yellow = graph_spindown_yellow->Fit("pol0", "S");
0491 TLegend leg3(.20, .70, .60, .90);
0492 leg3.AddEntry((TObject *) 0, Form("SMD South / Run 42796+42797"), "");
0493 leg3.AddEntry(graph_spinup_yellow, Form("yellow #uparrow : %.5f #pm %.5f", fit_spinup_yellow->Parameter(0), fit_spinup_yellow->ParError(0)), "LP");
0494 leg3.AddEntry(graph_spindown_yellow, Form("yellow #downarrow : %.5f #pm %.5f", fit_spindown_yellow->Parameter(0), fit_spindown_yellow->ParError(0)), "LP");
0495 leg3.SetTextSize(0.03);
0496 leg3.Draw();
0497 latex->DrawLatex(1 - gPad->GetRightMargin(), 1 - gPad->GetTopMargin() + 0.01, Form("#it{p+p}, 200 GeV #it{#bf{sPHENIX}} internal"));
0498
0499 TCanvas *canvas4 = new TCanvas("canvas_yellow_UD", "South SMD", 950, 800);
0500 graph_spinup_yellowUD->GetXaxis()->SetLimits(0, 111);
0501 graph_spinup_yellowUD->GetYaxis()->SetTitle("(U-D)/(U+D)");
0502 graph_spinup_yellowUD->GetXaxis()->SetTitle("Bunch number");
0503 graph_spinup_yellowUD->SetMaximum(-0.04 + 0.1);
0504 graph_spinup_yellowUD->SetMinimum(-0.04);
0505 canvas4->cd();
0506 graph_spinup_yellowUD->Draw("AP");
0507 graph_spindown_yellowUD->Draw("P SAME");
0508
0509
0510
0511
0512
0513
0514
0515
0516
0517
0518 TFitResultPtr fit_spinup_yellowUD = graph_spinup_yellowUD->Fit("pol0", "S");
0519 TFitResultPtr fit_spindown_yellowUD = graph_spindown_yellowUD->Fit("pol0", "S");
0520 TLegend leg4(.20, .70, .60, .90);
0521 leg4.AddEntry((TObject *) 0, Form("SMD South / Run 42796+42797"), "");
0522 leg4.AddEntry(graph_spinup_yellowUD, Form("yellow #uparrow : %.5f #pm %.5f", fit_spinup_yellowUD->Parameter(0), fit_spinup_yellowUD->ParError(0)), "LP");
0523 leg4.AddEntry(graph_spindown_yellowUD, Form("yellow #downarrow : %.5f #pm %.5f", fit_spindown_yellowUD->Parameter(0), fit_spindown_yellowUD->ParError(0)), "LP");
0524 leg4.SetTextSize(0.03);
0525 leg4.Draw();
0526 latex->DrawLatex(1 - gPad->GetRightMargin(), 1 - gPad->GetTopMargin() + 0.01, Form("#it{p+p}, 200 GeV #it{#bf{sPHENIX}} internal"));
0527
0528 TCanvas *canvas5 = new TCanvas("canvas5", "canvas5", 950, 800);
0529 canvas5->cd();
0530 canvas5->SetLogy();
0531
0532 n_smd_L->SetXTitle("bunch number");
0533
0534 n_smd_L->Draw("E");
0535 latex->DrawLatex(1 - gPad->GetRightMargin(), 1 - gPad->GetTopMargin() + 0.01, Form("#it{p+p}, 200 GeV #it{#bf{sPHENIX}} internal"));
0536
0537 canvas5->SaveAs("north_smd1.pdf");
0538 TCanvas *canvas6 = new TCanvas("canvas6", "canvas6", 950, 800);
0539 canvas6->cd();
0540 canvas6->SetLogy();
0541
0542 n_smd_R->SetXTitle("bunch number");
0543
0544 n_smd_R->Draw("E");
0545 latex->DrawLatex(1 - gPad->GetRightMargin(), 1 - gPad->GetTopMargin() + 0.01, Form("#it{p+p}, 200 GeV #it{#bf{sPHENIX}} internal"));
0546 canvas6->SaveAs("north_smd2.pdf");
0547
0548 TFile *sfile = new TFile("sfile.root", "RECREATE");
0549 TString pdfName;
0550 TString fileName;
0551 sfile->cd();
0552 canvas->Write();
0553 pdfName = canvas->GetName();
0554 fileName = pdfName + ".pdf";
0555 canvas->SaveAs(fileName);
0556 canvas->Update();
0557 canvas2->Write();
0558 pdfName = canvas2->GetName();
0559 fileName = pdfName + ".pdf";
0560 canvas2->SaveAs(fileName);
0561 canvas2->Update();
0562 canvas3->Write();
0563 pdfName = canvas3->GetName();
0564 fileName = pdfName + ".pdf";
0565 canvas3->SaveAs(fileName);
0566 canvas3->Update();
0567 canvas4->Write();
0568 pdfName = canvas4->GetName();
0569 fileName = pdfName + ".pdf";
0570 canvas4->SaveAs(fileName);
0571 canvas4->Update();
0572
0573 n_smd_L->Write();
0574 n_smd_R->Write();
0575 s_smd_L->Write();
0576 s_smd_R->Write();
0577 sfile->Close();
0578 }