Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:12:32

0001 #include <TFile.h>
0002 
0003 #include <TTree.h>
0004 
0005 #include <TDirectory.h>
0006 
0007 // #include "InttEvent.cc"
0008 
0009 #include "mbdtree.C"
0010 
0011 #include <iostream>
0012 
0013 //R__LOAD_LIBRARY(libInttEvent.so)
0014 
0015 void sync_mbd_intt_full() {
0016 
0017     TDirectory * gDir = gDirectory;
0018 
0019     TFile * f_mbd = TFile::Open("/sphenix/tg/tg01/commissioning/INTT/subsystems/MBD/auau2023_v1/beam_seb18-00020869-0000_mbd.root");
0020     gDirectory = gDir;
0021     TTree * t_mbd = (TTree * ) f_mbd -> Get("t");
0022     cout << " " << t_mbd << endl;
0023     if (!t_mbd) return;
0024     mbdtree mbdt(t_mbd);
0025 
0026     string folder_direction = "/sphenix/user/ChengWei/INTT/INTT_commissioning/ZeroField/20869/folder_beam_inttall-00020869-0000_event_base_ana_cluster_full_survey_3.32_excludeR40000_200kEvent_3HotCut_advanced_test";
0027     TFile * f_intt = TFile::Open(Form("%s/INTT_zvtx_200k.root", folder_direction.c_str()));
0028     gDirectory = gDir;
0029     TTree * t_intt = (TTree * ) f_intt -> Get("tree_Z");
0030     if (!t_intt) return;
0031 
0032     int intt_eID, intt_N_cluster_outer, intt_N_cluster_inner, intt_N_good, intt_ES_N_good, intt_N_group;
0033     double intt_ES_zvtx, intt_ES_zvtxE, intt_ES_rangeL, intt_ES_rangeR, intt_ES_width_density;
0034     double intt_LB_Gaus_mean, intt_LB_Gaus_meanE, intt_LB_Gaus_width, intt_LB_Gaus_offset, intt_LB_Gaus_chi2, intt_LB_Gaus_size_width, intt_LB_geo_mean;
0035     double MC_true_zvtx;
0036     bool intt_good_zvtx_tag;
0037     Long64_t intt_bco_full; 
0038 
0039     t_intt -> SetBranchAddress("eID",&intt_eID);
0040     t_intt -> SetBranchAddress("bco_full",&intt_bco_full);
0041     t_intt -> SetBranchAddress("nclu_inner",&intt_N_cluster_inner);
0042     t_intt -> SetBranchAddress("nclu_outer",&intt_N_cluster_outer);
0043     t_intt -> SetBranchAddress("ES_zvtx",&intt_ES_zvtx);
0044     t_intt -> SetBranchAddress("ES_zvtxE",&intt_ES_zvtxE);
0045     t_intt -> SetBranchAddress("ES_rangeL",&intt_ES_rangeL);
0046     t_intt -> SetBranchAddress("ES_rangeR",&intt_ES_rangeR);
0047     t_intt -> SetBranchAddress("ES_N_good",&intt_ES_N_good);
0048     t_intt -> SetBranchAddress("ES_Width_density",&intt_ES_width_density);
0049     t_intt -> SetBranchAddress("LB_Gaus_Mean_mean",&intt_LB_Gaus_mean);
0050     t_intt -> SetBranchAddress("LB_Gaus_Mean_meanE",&intt_LB_Gaus_meanE);
0051     t_intt -> SetBranchAddress("LB_Gaus_Mean_width",&intt_LB_Gaus_width);
0052     t_intt -> SetBranchAddress("LB_Gaus_Width_offset", &intt_LB_Gaus_offset);
0053     t_intt -> SetBranchAddress("LB_Gaus_Mean_chi2", &intt_LB_Gaus_chi2);
0054     t_intt -> SetBranchAddress("LB_Gaus_Width_size_width", &intt_LB_Gaus_size_width);
0055     t_intt -> SetBranchAddress("LB_geo_mean", &intt_LB_geo_mean);
0056     t_intt -> SetBranchAddress("good_zvtx_tag", &intt_good_zvtx_tag);
0057     t_intt -> SetBranchAddress("mid_cut_Ngroup", &intt_N_group);
0058     t_intt -> SetBranchAddress("MC_true_zvtx",&MC_true_zvtx);
0059 
0060     cout << t_mbd -> GetEntries() << " " << t_intt -> GetEntries() << endl;
0061 
0062     TFile * out_file = new TFile(Form("%s/INTT_MBD_zvtx.root",folder_direction.c_str()),"RECREATE");
0063 
0064     int out_eID, out_N_cluster_outer, out_N_cluster_inner, out_N_good, out_ES_N_good, out_N_group;
0065     double out_ES_zvtx, out_ES_zvtxE, out_ES_rangeL, out_ES_rangeR, out_ES_width_density;
0066     double out_LB_Gaus_mean, out_LB_Gaus_meanE, out_LB_Gaus_width, out_LB_Gaus_offset, out_LB_Gaus_chi2, out_LB_Gaus_size_width, out_LB_geo_mean;
0067     double out_MC_true_zvtx;
0068     bool out_good_zvtx_tag;
0069     Long64_t out_bco_full;  
0070 
0071     double out_mbd_bz, out_mbd_bqs, out_mbd_bqn;
0072     double out_mbd_bns, out_mbd_bnn;
0073     double out_mbd_bts, out_mbd_btn;
0074     double out_mbd_bt0;
0075     vector<double> out_mbd_tt; out_mbd_tt.clear();
0076     vector<double> out_mbd_tq; out_mbd_tq.clear();
0077     vector<double> out_mbd_q; out_mbd_q.clear();
0078 
0079     TTree * tree_out =  new TTree ("tree_Z", "INTT Z info.");
0080 
0081     tree_out -> Branch("eID",&out_eID);
0082     tree_out -> Branch("bco_full",&out_bco_full);
0083     tree_out -> Branch("nclu_inner",&out_N_cluster_inner);
0084     tree_out -> Branch("nclu_outer",&out_N_cluster_outer);
0085     tree_out -> Branch("ES_zvtx",&out_ES_zvtx);
0086     tree_out -> Branch("ES_zvtxE",&out_ES_zvtxE);
0087     tree_out -> Branch("ES_rangeL",&out_ES_rangeL);
0088     tree_out -> Branch("ES_rangeR",&out_ES_rangeR);
0089     tree_out -> Branch("ES_N_good",&out_ES_N_good);
0090     tree_out -> Branch("ES_Width_density",&out_ES_width_density);
0091     tree_out -> Branch("LB_Gaus_mean",&out_LB_Gaus_mean);
0092     tree_out -> Branch("LB_Gaus_meanE",&out_LB_Gaus_meanE);
0093     tree_out -> Branch("LB_Gaus_width",&out_LB_Gaus_width);
0094     tree_out -> Branch("LB_Gaus_offset", &out_LB_Gaus_offset);
0095     tree_out -> Branch("LB_Gaus_chi2", &out_LB_Gaus_chi2);
0096     tree_out -> Branch("LB_Gaus_size_width", &out_LB_Gaus_size_width);
0097     tree_out -> Branch("LB_geo_mean", &out_LB_geo_mean);
0098     tree_out -> Branch("good_zvtx_tag", &out_good_zvtx_tag);
0099     tree_out -> Branch("N_group", &out_N_group);
0100     tree_out -> Branch("MC_true_zvtx",&out_MC_true_zvtx);
0101 
0102     tree_out -> Branch("mbd_bz",&out_mbd_bz); // note : mbd branch
0103     tree_out -> Branch("mbd_bqs",&out_mbd_bqs);
0104     tree_out -> Branch("mbd_bqn",&out_mbd_bqn);
0105     tree_out -> Branch("mbd_bns",&out_mbd_bns);
0106     tree_out -> Branch("mbd_bnn",&out_mbd_bnn);
0107     tree_out -> Branch("mbd_bts",&out_mbd_bts);
0108     tree_out -> Branch("mbd_btn",&out_mbd_btn);
0109     tree_out -> Branch("mbd_bt0",&out_mbd_bt0);
0110     tree_out -> Branch("mbd_tt_vec",&out_mbd_tt);
0111     tree_out -> Branch("mbd_tq_vec",&out_mbd_tq);
0112     tree_out -> Branch("mbd_q_vec",&out_mbd_q);
0113     
0114 
0115     gDirectory = gDir;
0116 
0117     TH2F * h_qmbd_nintt = new TH2F("h_qmbd_nintt", "BbcQ vs Intt N", 200, 0, 9000, 200, 0, 4000);
0118     TH2F * intt_mbd_bco = new TH2F("intt_mbd_bco", "INTT - MBD", 100, 0, 50000, 100, -10, 100000);
0119 
0120     int prev_mbdclk = 0;
0121     ULong64_t prev_bco = 0;
0122 
0123     bool found_firstevt = false;
0124     int mbd_evt_offset = 0;
0125     int intt_evt_offset = 0;
0126 
0127     long long number_Nevent = t_intt -> GetEntries();
0128 
0129     // note : if the for loop is based on the one with smaller number of entries, the closer part should be paied attention.
0130     // note : because that the for loop ends when "i < t_intt -> GetEntries()", but we have the "intt_evt_offset" which is not zero if some missing event from the MBD was found.
0131     // note : when we use "GetEntry(i+intt_evt_offset)", it will try to access the event out of the range.
0132     // note : but some how it works, and return the last event it can access which is the last one. 
0133     for (int i = 0; i < number_Nevent; i++) {
0134         mbdt.LoadTree(i + mbd_evt_offset);
0135         mbdt.GetEntry(i + mbd_evt_offset);
0136         t_intt -> GetEntry(i + intt_evt_offset); 
0137 
0138         float bbcq = mbdt.bqn + mbdt.bqs;
0139 
0140         unsigned short mbdclk = mbdt.femclk;
0141         ULong64_t bco = intt_bco_full;
0142         ULong64_t bco16 = bco & 0xFFFF;
0143 
0144         int mbd_prvdif = (mbdclk - prev_mbdclk) & 0xFFFF;
0145         ULong64_t intt_prvdif = bco - prev_bco;
0146 
0147         prev_mbdclk = mbdclk;
0148         prev_bco = bco;
0149 
0150         out_mbd_bqn = mbdt.bqn;
0151         out_mbd_bqs = mbdt.bqs;
0152         out_mbd_bz  = mbdt.bz;
0153         out_mbd_bns = mbdt.bns;
0154         out_mbd_bnn = mbdt.bnn;
0155         out_mbd_bts = mbdt.bts;
0156         out_mbd_btn = mbdt.btn;
0157         out_mbd_bt0 = mbdt.bt0;
0158 
0159         out_mbd_tt.push_back(mbdt.tt0); out_mbd_tq.push_back(mbdt.tq0); out_mbd_q.push_back(mbdt.q0);
0160         out_mbd_tt.push_back(mbdt.tt1); out_mbd_tq.push_back(mbdt.tq1); out_mbd_q.push_back(mbdt.q1);
0161         out_mbd_tt.push_back(mbdt.tt2); out_mbd_tq.push_back(mbdt.tq2); out_mbd_q.push_back(mbdt.q2);
0162         out_mbd_tt.push_back(mbdt.tt3); out_mbd_tq.push_back(mbdt.tq3); out_mbd_q.push_back(mbdt.q3);
0163         out_mbd_tt.push_back(mbdt.tt4); out_mbd_tq.push_back(mbdt.tq4); out_mbd_q.push_back(mbdt.q4);
0164         out_mbd_tt.push_back(mbdt.tt5); out_mbd_tq.push_back(mbdt.tq5); out_mbd_q.push_back(mbdt.q5);
0165         out_mbd_tt.push_back(mbdt.tt6); out_mbd_tq.push_back(mbdt.tq6); out_mbd_q.push_back(mbdt.q6);
0166         out_mbd_tt.push_back(mbdt.tt7); out_mbd_tq.push_back(mbdt.tq7); out_mbd_q.push_back(mbdt.q7);
0167         out_mbd_tt.push_back(mbdt.tt8); out_mbd_tq.push_back(mbdt.tq8); out_mbd_q.push_back(mbdt.q8);
0168         out_mbd_tt.push_back(mbdt.tt9); out_mbd_tq.push_back(mbdt.tq9); out_mbd_q.push_back(mbdt.q9);
0169         out_mbd_tt.push_back(mbdt.tt10); out_mbd_tq.push_back(mbdt.tq10); out_mbd_q.push_back(mbdt.q10);
0170         out_mbd_tt.push_back(mbdt.tt11); out_mbd_tq.push_back(mbdt.tq11); out_mbd_q.push_back(mbdt.q11);
0171         out_mbd_tt.push_back(mbdt.tt12); out_mbd_tq.push_back(mbdt.tq12); out_mbd_q.push_back(mbdt.q12);
0172         out_mbd_tt.push_back(mbdt.tt13); out_mbd_tq.push_back(mbdt.tq13); out_mbd_q.push_back(mbdt.q13);
0173         out_mbd_tt.push_back(mbdt.tt14); out_mbd_tq.push_back(mbdt.tq14); out_mbd_q.push_back(mbdt.q14);
0174         out_mbd_tt.push_back(mbdt.tt15); out_mbd_tq.push_back(mbdt.tq15); out_mbd_q.push_back(mbdt.q15);
0175         out_mbd_tt.push_back(mbdt.tt16); out_mbd_tq.push_back(mbdt.tq16); out_mbd_q.push_back(mbdt.q16);
0176         out_mbd_tt.push_back(mbdt.tt17); out_mbd_tq.push_back(mbdt.tq17); out_mbd_q.push_back(mbdt.q17);
0177         out_mbd_tt.push_back(mbdt.tt18); out_mbd_tq.push_back(mbdt.tq18); out_mbd_q.push_back(mbdt.q18);
0178         out_mbd_tt.push_back(mbdt.tt19); out_mbd_tq.push_back(mbdt.tq19); out_mbd_q.push_back(mbdt.q19);
0179         out_mbd_tt.push_back(mbdt.tt20); out_mbd_tq.push_back(mbdt.tq20); out_mbd_q.push_back(mbdt.q20);
0180         out_mbd_tt.push_back(mbdt.tt21); out_mbd_tq.push_back(mbdt.tq21); out_mbd_q.push_back(mbdt.q21);
0181         out_mbd_tt.push_back(mbdt.tt22); out_mbd_tq.push_back(mbdt.tq22); out_mbd_q.push_back(mbdt.q22);
0182         out_mbd_tt.push_back(mbdt.tt23); out_mbd_tq.push_back(mbdt.tq23); out_mbd_q.push_back(mbdt.q23);
0183         out_mbd_tt.push_back(mbdt.tt24); out_mbd_tq.push_back(mbdt.tq24); out_mbd_q.push_back(mbdt.q24);
0184         out_mbd_tt.push_back(mbdt.tt25); out_mbd_tq.push_back(mbdt.tq25); out_mbd_q.push_back(mbdt.q25);
0185         out_mbd_tt.push_back(mbdt.tt26); out_mbd_tq.push_back(mbdt.tq26); out_mbd_q.push_back(mbdt.q26);
0186         out_mbd_tt.push_back(mbdt.tt27); out_mbd_tq.push_back(mbdt.tq27); out_mbd_q.push_back(mbdt.q27);
0187         out_mbd_tt.push_back(mbdt.tt28); out_mbd_tq.push_back(mbdt.tq28); out_mbd_q.push_back(mbdt.q28);
0188         out_mbd_tt.push_back(mbdt.tt29); out_mbd_tq.push_back(mbdt.tq29); out_mbd_q.push_back(mbdt.q29);
0189         out_mbd_tt.push_back(mbdt.tt30); out_mbd_tq.push_back(mbdt.tq30); out_mbd_q.push_back(mbdt.q30);
0190         out_mbd_tt.push_back(mbdt.tt31); out_mbd_tq.push_back(mbdt.tq31); out_mbd_q.push_back(mbdt.q31);
0191         out_mbd_tt.push_back(mbdt.tt32); out_mbd_tq.push_back(mbdt.tq32); out_mbd_q.push_back(mbdt.q32);
0192         out_mbd_tt.push_back(mbdt.tt33); out_mbd_tq.push_back(mbdt.tq33); out_mbd_q.push_back(mbdt.q33);
0193         out_mbd_tt.push_back(mbdt.tt34); out_mbd_tq.push_back(mbdt.tq34); out_mbd_q.push_back(mbdt.q34);
0194         out_mbd_tt.push_back(mbdt.tt35); out_mbd_tq.push_back(mbdt.tq35); out_mbd_q.push_back(mbdt.q35);
0195         out_mbd_tt.push_back(mbdt.tt36); out_mbd_tq.push_back(mbdt.tq36); out_mbd_q.push_back(mbdt.q36);
0196         out_mbd_tt.push_back(mbdt.tt37); out_mbd_tq.push_back(mbdt.tq37); out_mbd_q.push_back(mbdt.q37);
0197         out_mbd_tt.push_back(mbdt.tt38); out_mbd_tq.push_back(mbdt.tq38); out_mbd_q.push_back(mbdt.q38);
0198         out_mbd_tt.push_back(mbdt.tt39); out_mbd_tq.push_back(mbdt.tq39); out_mbd_q.push_back(mbdt.q39);
0199         out_mbd_tt.push_back(mbdt.tt40); out_mbd_tq.push_back(mbdt.tq40); out_mbd_q.push_back(mbdt.q40);
0200         out_mbd_tt.push_back(mbdt.tt41); out_mbd_tq.push_back(mbdt.tq41); out_mbd_q.push_back(mbdt.q41);
0201         out_mbd_tt.push_back(mbdt.tt42); out_mbd_tq.push_back(mbdt.tq42); out_mbd_q.push_back(mbdt.q42);
0202         out_mbd_tt.push_back(mbdt.tt43); out_mbd_tq.push_back(mbdt.tq43); out_mbd_q.push_back(mbdt.q43);
0203         out_mbd_tt.push_back(mbdt.tt44); out_mbd_tq.push_back(mbdt.tq44); out_mbd_q.push_back(mbdt.q44);
0204         out_mbd_tt.push_back(mbdt.tt45); out_mbd_tq.push_back(mbdt.tq45); out_mbd_q.push_back(mbdt.q45);
0205         out_mbd_tt.push_back(mbdt.tt46); out_mbd_tq.push_back(mbdt.tq46); out_mbd_q.push_back(mbdt.q46);
0206         out_mbd_tt.push_back(mbdt.tt47); out_mbd_tq.push_back(mbdt.tq47); out_mbd_q.push_back(mbdt.q47);
0207         out_mbd_tt.push_back(mbdt.tt48); out_mbd_tq.push_back(mbdt.tq48); out_mbd_q.push_back(mbdt.q48);
0208         out_mbd_tt.push_back(mbdt.tt49); out_mbd_tq.push_back(mbdt.tq49); out_mbd_q.push_back(mbdt.q49);
0209         out_mbd_tt.push_back(mbdt.tt50); out_mbd_tq.push_back(mbdt.tq50); out_mbd_q.push_back(mbdt.q50);
0210         out_mbd_tt.push_back(mbdt.tt51); out_mbd_tq.push_back(mbdt.tq51); out_mbd_q.push_back(mbdt.q51);
0211         out_mbd_tt.push_back(mbdt.tt52); out_mbd_tq.push_back(mbdt.tq52); out_mbd_q.push_back(mbdt.q52);
0212         out_mbd_tt.push_back(mbdt.tt53); out_mbd_tq.push_back(mbdt.tq53); out_mbd_q.push_back(mbdt.q53);
0213         out_mbd_tt.push_back(mbdt.tt54); out_mbd_tq.push_back(mbdt.tq54); out_mbd_q.push_back(mbdt.q54);
0214         out_mbd_tt.push_back(mbdt.tt55); out_mbd_tq.push_back(mbdt.tq55); out_mbd_q.push_back(mbdt.q55);
0215         out_mbd_tt.push_back(mbdt.tt56); out_mbd_tq.push_back(mbdt.tq56); out_mbd_q.push_back(mbdt.q56);
0216         out_mbd_tt.push_back(mbdt.tt57); out_mbd_tq.push_back(mbdt.tq57); out_mbd_q.push_back(mbdt.q57);
0217         out_mbd_tt.push_back(mbdt.tt58); out_mbd_tq.push_back(mbdt.tq58); out_mbd_q.push_back(mbdt.q58);
0218         out_mbd_tt.push_back(mbdt.tt59); out_mbd_tq.push_back(mbdt.tq59); out_mbd_q.push_back(mbdt.q59);
0219         out_mbd_tt.push_back(mbdt.tt60); out_mbd_tq.push_back(mbdt.tq60); out_mbd_q.push_back(mbdt.q60);
0220         out_mbd_tt.push_back(mbdt.tt61); out_mbd_tq.push_back(mbdt.tq61); out_mbd_q.push_back(mbdt.q61);
0221         out_mbd_tt.push_back(mbdt.tt62); out_mbd_tq.push_back(mbdt.tq62); out_mbd_q.push_back(mbdt.q62);
0222         out_mbd_tt.push_back(mbdt.tt63); out_mbd_tq.push_back(mbdt.tq63); out_mbd_q.push_back(mbdt.q63);
0223         out_mbd_tt.push_back(mbdt.tt64); out_mbd_tq.push_back(mbdt.tq64); out_mbd_q.push_back(mbdt.q64);
0224         out_mbd_tt.push_back(mbdt.tt65); out_mbd_tq.push_back(mbdt.tq65); out_mbd_q.push_back(mbdt.q65);
0225         out_mbd_tt.push_back(mbdt.tt66); out_mbd_tq.push_back(mbdt.tq66); out_mbd_q.push_back(mbdt.q66);
0226         out_mbd_tt.push_back(mbdt.tt67); out_mbd_tq.push_back(mbdt.tq67); out_mbd_q.push_back(mbdt.q67);
0227         out_mbd_tt.push_back(mbdt.tt68); out_mbd_tq.push_back(mbdt.tq68); out_mbd_q.push_back(mbdt.q68);
0228         out_mbd_tt.push_back(mbdt.tt69); out_mbd_tq.push_back(mbdt.tq69); out_mbd_q.push_back(mbdt.q69);
0229         out_mbd_tt.push_back(mbdt.tt70); out_mbd_tq.push_back(mbdt.tq70); out_mbd_q.push_back(mbdt.q70);
0230         out_mbd_tt.push_back(mbdt.tt71); out_mbd_tq.push_back(mbdt.tq71); out_mbd_q.push_back(mbdt.q71);
0231         out_mbd_tt.push_back(mbdt.tt72); out_mbd_tq.push_back(mbdt.tq72); out_mbd_q.push_back(mbdt.q72);
0232         out_mbd_tt.push_back(mbdt.tt73); out_mbd_tq.push_back(mbdt.tq73); out_mbd_q.push_back(mbdt.q73);
0233         out_mbd_tt.push_back(mbdt.tt74); out_mbd_tq.push_back(mbdt.tq74); out_mbd_q.push_back(mbdt.q74);
0234         out_mbd_tt.push_back(mbdt.tt75); out_mbd_tq.push_back(mbdt.tq75); out_mbd_q.push_back(mbdt.q75);
0235         out_mbd_tt.push_back(mbdt.tt76); out_mbd_tq.push_back(mbdt.tq76); out_mbd_q.push_back(mbdt.q76);
0236         out_mbd_tt.push_back(mbdt.tt77); out_mbd_tq.push_back(mbdt.tq77); out_mbd_q.push_back(mbdt.q77);
0237         out_mbd_tt.push_back(mbdt.tt78); out_mbd_tq.push_back(mbdt.tq78); out_mbd_q.push_back(mbdt.q78);
0238         out_mbd_tt.push_back(mbdt.tt79); out_mbd_tq.push_back(mbdt.tq79); out_mbd_q.push_back(mbdt.q79);
0239         out_mbd_tt.push_back(mbdt.tt80); out_mbd_tq.push_back(mbdt.tq80); out_mbd_q.push_back(mbdt.q80);
0240         out_mbd_tt.push_back(mbdt.tt81); out_mbd_tq.push_back(mbdt.tq81); out_mbd_q.push_back(mbdt.q81);
0241         out_mbd_tt.push_back(mbdt.tt82); out_mbd_tq.push_back(mbdt.tq82); out_mbd_q.push_back(mbdt.q82);
0242         out_mbd_tt.push_back(mbdt.tt83); out_mbd_tq.push_back(mbdt.tq83); out_mbd_q.push_back(mbdt.q83);
0243         out_mbd_tt.push_back(mbdt.tt84); out_mbd_tq.push_back(mbdt.tq84); out_mbd_q.push_back(mbdt.q84);
0244         out_mbd_tt.push_back(mbdt.tt85); out_mbd_tq.push_back(mbdt.tq85); out_mbd_q.push_back(mbdt.q85);
0245         out_mbd_tt.push_back(mbdt.tt86); out_mbd_tq.push_back(mbdt.tq86); out_mbd_q.push_back(mbdt.q86);
0246         out_mbd_tt.push_back(mbdt.tt87); out_mbd_tq.push_back(mbdt.tq87); out_mbd_q.push_back(mbdt.q87);
0247         out_mbd_tt.push_back(mbdt.tt88); out_mbd_tq.push_back(mbdt.tq88); out_mbd_q.push_back(mbdt.q88);
0248         out_mbd_tt.push_back(mbdt.tt89); out_mbd_tq.push_back(mbdt.tq89); out_mbd_q.push_back(mbdt.q89);
0249         out_mbd_tt.push_back(mbdt.tt90); out_mbd_tq.push_back(mbdt.tq90); out_mbd_q.push_back(mbdt.q90);
0250         out_mbd_tt.push_back(mbdt.tt91); out_mbd_tq.push_back(mbdt.tq91); out_mbd_q.push_back(mbdt.q91);
0251         out_mbd_tt.push_back(mbdt.tt92); out_mbd_tq.push_back(mbdt.tq92); out_mbd_q.push_back(mbdt.q92);
0252         out_mbd_tt.push_back(mbdt.tt93); out_mbd_tq.push_back(mbdt.tq93); out_mbd_q.push_back(mbdt.q93);
0253         out_mbd_tt.push_back(mbdt.tt94); out_mbd_tq.push_back(mbdt.tq94); out_mbd_q.push_back(mbdt.q94);
0254         out_mbd_tt.push_back(mbdt.tt95); out_mbd_tq.push_back(mbdt.tq95); out_mbd_q.push_back(mbdt.q95);
0255         out_mbd_tt.push_back(mbdt.tt96); out_mbd_tq.push_back(mbdt.tq96); out_mbd_q.push_back(mbdt.q96);
0256         out_mbd_tt.push_back(mbdt.tt97); out_mbd_tq.push_back(mbdt.tq97); out_mbd_q.push_back(mbdt.q97);
0257         out_mbd_tt.push_back(mbdt.tt98); out_mbd_tq.push_back(mbdt.tq98); out_mbd_q.push_back(mbdt.q98);
0258         out_mbd_tt.push_back(mbdt.tt99); out_mbd_tq.push_back(mbdt.tq99); out_mbd_q.push_back(mbdt.q99);
0259         out_mbd_tt.push_back(mbdt.tt100); out_mbd_tq.push_back(mbdt.tq100); out_mbd_q.push_back(mbdt.q100);
0260         out_mbd_tt.push_back(mbdt.tt101); out_mbd_tq.push_back(mbdt.tq101); out_mbd_q.push_back(mbdt.q101);
0261         out_mbd_tt.push_back(mbdt.tt102); out_mbd_tq.push_back(mbdt.tq102); out_mbd_q.push_back(mbdt.q102);
0262         out_mbd_tt.push_back(mbdt.tt103); out_mbd_tq.push_back(mbdt.tq103); out_mbd_q.push_back(mbdt.q103);
0263         out_mbd_tt.push_back(mbdt.tt104); out_mbd_tq.push_back(mbdt.tq104); out_mbd_q.push_back(mbdt.q104);
0264         out_mbd_tt.push_back(mbdt.tt105); out_mbd_tq.push_back(mbdt.tq105); out_mbd_q.push_back(mbdt.q105);
0265         out_mbd_tt.push_back(mbdt.tt106); out_mbd_tq.push_back(mbdt.tq106); out_mbd_q.push_back(mbdt.q106);
0266         out_mbd_tt.push_back(mbdt.tt107); out_mbd_tq.push_back(mbdt.tq107); out_mbd_q.push_back(mbdt.q107);
0267         out_mbd_tt.push_back(mbdt.tt108); out_mbd_tq.push_back(mbdt.tq108); out_mbd_q.push_back(mbdt.q108);
0268         out_mbd_tt.push_back(mbdt.tt109); out_mbd_tq.push_back(mbdt.tq109); out_mbd_q.push_back(mbdt.q109);
0269         out_mbd_tt.push_back(mbdt.tt110); out_mbd_tq.push_back(mbdt.tq110); out_mbd_q.push_back(mbdt.q110);
0270         out_mbd_tt.push_back(mbdt.tt111); out_mbd_tq.push_back(mbdt.tq111); out_mbd_q.push_back(mbdt.q111);
0271         out_mbd_tt.push_back(mbdt.tt112); out_mbd_tq.push_back(mbdt.tq112); out_mbd_q.push_back(mbdt.q112);
0272         out_mbd_tt.push_back(mbdt.tt113); out_mbd_tq.push_back(mbdt.tq113); out_mbd_q.push_back(mbdt.q113);
0273         out_mbd_tt.push_back(mbdt.tt114); out_mbd_tq.push_back(mbdt.tq114); out_mbd_q.push_back(mbdt.q114);
0274         out_mbd_tt.push_back(mbdt.tt115); out_mbd_tq.push_back(mbdt.tq115); out_mbd_q.push_back(mbdt.q115);
0275         out_mbd_tt.push_back(mbdt.tt116); out_mbd_tq.push_back(mbdt.tq116); out_mbd_q.push_back(mbdt.q116);
0276         out_mbd_tt.push_back(mbdt.tt117); out_mbd_tq.push_back(mbdt.tq117); out_mbd_q.push_back(mbdt.q117);
0277         out_mbd_tt.push_back(mbdt.tt118); out_mbd_tq.push_back(mbdt.tq118); out_mbd_q.push_back(mbdt.q118);
0278         out_mbd_tt.push_back(mbdt.tt119); out_mbd_tq.push_back(mbdt.tq119); out_mbd_q.push_back(mbdt.q119);
0279         out_mbd_tt.push_back(mbdt.tt120); out_mbd_tq.push_back(mbdt.tq120); out_mbd_q.push_back(mbdt.q120);
0280         out_mbd_tt.push_back(mbdt.tt121); out_mbd_tq.push_back(mbdt.tq121); out_mbd_q.push_back(mbdt.q121);
0281         out_mbd_tt.push_back(mbdt.tt122); out_mbd_tq.push_back(mbdt.tq122); out_mbd_q.push_back(mbdt.q122);
0282         out_mbd_tt.push_back(mbdt.tt123); out_mbd_tq.push_back(mbdt.tq123); out_mbd_q.push_back(mbdt.q123);
0283         out_mbd_tt.push_back(mbdt.tt124); out_mbd_tq.push_back(mbdt.tq124); out_mbd_q.push_back(mbdt.q124);
0284         out_mbd_tt.push_back(mbdt.tt125); out_mbd_tq.push_back(mbdt.tq125); out_mbd_q.push_back(mbdt.q125);
0285         out_mbd_tt.push_back(mbdt.tt126); out_mbd_tq.push_back(mbdt.tq126); out_mbd_q.push_back(mbdt.q126);
0286         out_mbd_tt.push_back(mbdt.tt127); out_mbd_tq.push_back(mbdt.tq127); out_mbd_q.push_back(mbdt.q127);
0287         
0288 
0289         out_eID = intt_eID;
0290         out_bco_full = intt_bco_full;
0291         out_N_cluster_inner = intt_N_cluster_inner;
0292         out_N_cluster_outer = intt_N_cluster_outer;
0293         out_ES_zvtx = intt_ES_zvtx;
0294         out_ES_zvtxE = intt_ES_zvtxE;
0295         out_ES_rangeL = intt_ES_rangeL;
0296         out_ES_rangeR = intt_ES_rangeR;
0297         out_ES_N_good = intt_ES_N_good;
0298         out_ES_width_density = intt_ES_width_density;
0299         out_LB_Gaus_mean = intt_LB_Gaus_mean;
0300         out_LB_Gaus_meanE = intt_LB_Gaus_meanE;
0301         out_LB_Gaus_width = intt_LB_Gaus_width;
0302         out_LB_Gaus_offset = intt_LB_Gaus_offset;
0303         out_LB_Gaus_chi2 = intt_LB_Gaus_chi2;
0304         out_LB_Gaus_size_width = intt_LB_Gaus_size_width;
0305         out_LB_geo_mean = intt_LB_geo_mean;
0306         out_good_zvtx_tag = intt_good_zvtx_tag;
0307         out_MC_true_zvtx = MC_true_zvtx;
0308         out_N_group = intt_N_group;
0309 
0310         if (intt_N_cluster_inner != -1 && intt_N_cluster_outer != -1){
0311             if (mbdt.bqs > 100 && mbdt.bqn > 100){
0312                 h_qmbd_nintt -> Fill(intt_N_cluster_inner + intt_N_cluster_outer, bbcq);
0313             }
0314             
0315             intt_mbd_bco -> Fill(i, (mbdclk - bco16) & 0xFFFF);
0316 
0317             tree_out -> Fill();
0318         }
0319         
0320         out_mbd_tt.clear();
0321         out_mbd_tq.clear();
0322         out_mbd_q.clear();
0323 
0324         if ((i % 1000) == 0) {
0325             cout << i << " " << hex << setw(6) << mbdclk << " " << setw(6) << bco16 << " (mbd-intt)" << setw(6) << ((mbdclk - bco16) & 0xFFFF) <<
0326                 "      (femclk-prev)" << setw(6) << mbd_prvdif << " (bco-prev)" << setw(6) << intt_prvdif << dec << endl;
0327         }
0328 
0329         // note : if the total access event touches the last event of the INTT tree, break the loop.
0330         if (i + intt_evt_offset == number_Nevent) {break;}
0331 
0332         t_intt -> GetEntry(i + 1 + intt_evt_offset);
0333         ULong64_t next_bco16 = (intt_bco_full) & 0xFFFF;
0334         mbdt.LoadTree(i + 1);
0335         mbdt.GetEntry(i + 1);
0336         unsigned short next_mbdclk = mbdt.femclk;
0337         if (((next_mbdclk - next_bco16) & 0xFFFF) != ((mbdclk - bco16) & 0xFFFF)) intt_evt_offset += 1;
0338     }
0339 
0340     out_file -> cd();
0341     tree_out->SetDirectory(out_file);
0342     tree_out -> Write("", TObject::kOverwrite);
0343     out_file -> Close();
0344     
0345     TFile * froot = new TFile(Form("%s/sync.root",folder_direction.c_str()), "recreate");
0346     h_qmbd_nintt -> Write();
0347     intt_mbd_bco -> Write();
0348     froot -> Close();
0349 
0350     
0351 }