File indexing completed on 2025-01-29 10:23:12
0001 int Distill_pi(string seed)
0002 {
0003
0004 std::string inputFile = "TestOut_hadronic_"+seed+"seed.txt";
0005 std::ifstream fin(inputFile.c_str());
0006 std::string str;
0007
0008 std::string foutname = "LQ_3pion_"+seed+"seed.txt";
0009 std::ofstream fout;
0010 fout.open(foutname.c_str());
0011
0012 int I, KS, KF, ORIG;
0013 const int tau_KF = 15;
0014 const int pi_KF = 211;
0015 int I_prev = 0;
0016 int event_count = 0;
0017 int pi_num = 0;
0018
0019 vector<int> is_three_pi;
0020 vector<int> tau_orig;
0021
0022 fin.clear();
0023 fin.seekg(0, ios::beg);
0024
0025
0026 while (std::getline(fin, str))
0027 {
0028 if(str.length() == 127)
0029 {
0030
0031 std::istringstream iss(str);
0032
0033
0034 if(iss >> I >> KS >> KF >> ORIG)
0035 {
0036
0037 if(I < I_prev) tau_orig.clear();
0038 I_prev = I;
0039
0040 if(TMath::Abs(KF) == tau_KF){
0041
0042 tau_orig.push_back(I);
0043 }
0044 else
0045 {
0046 for(int i = 0; i < tau_orig.size(); i++)
0047 {
0048
0049 if(ORIG == tau_orig[i])
0050 {
0051
0052
0053 if(TMath::Abs(KF) == pi_KF){
0054 pi_num++;
0055 }
0056
0057 tau_orig.push_back(I);
0058 }
0059 }
0060 }
0061 }
0062 }
0063 else
0064 {
0065
0066 if(str.find("Event finished") != std::string::npos) {
0067
0068
0069 if(pi_num == 3) is_three_pi.push_back(1);
0070 else {
0071 is_three_pi.push_back(0);
0072 }
0073 event_count++;
0074 if(event_count % 100==0) cout<<event_count<<endl;
0075
0076
0077 pi_num = 0;
0078 }
0079 }
0080 }
0081
0082
0083 int events_left = 0;
0084 int line_count = 0;
0085 fin.clear();
0086 fin.seekg(0, ios::beg);
0087
0088 event_count = 0;
0089 while (std::getline(fin, str))
0090 {
0091 line_count++;
0092 if(line_count<7 && is_three_pi[event_count]==0) fout << str << endl;
0093
0094 if(str.length() == 127)
0095 {
0096 if(is_three_pi[event_count] == 1) fout << str << endl;
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130 }
0131 else
0132 {
0133
0134 if(is_three_pi[event_count]) fout<<str<<endl;
0135
0136 if(str.find("Event finished") != std::string::npos) {
0137 if(is_three_pi[event_count] == 1) {
0138 events_left++;
0139 }
0140 event_count++;
0141 if(event_count % 100==0) cout<<event_count<<endl;
0142
0143 if(events_left == 1000) break;
0144 }
0145 }
0146 }
0147
0148
0149 gSystem->Load("libeicsmear");
0150 BuildTree(foutname.c_str(),"./",events_left);
0151
0152 return 0;
0153 }