File indexing completed on 2025-08-06 08:16:31
0001 #include "TRandom3.h"
0002
0003
0004 void injectAsymmetry()
0005 {
0006
0007 int bpat[120] = {0};
0008 int ypat[120] = {0};
0009 std::string preset_pattern_blue = "-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-++-+--+-+-+-++-+-+-+--+-*********";
0010 std::string preset_pattern_yellow = "--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--++--+*********";
0011
0012 for (int i = 0; i < 120; i++)
0013 {
0014 if (preset_pattern_blue.at(i) == '+') {bpat[i] = 1;}
0015 else if (preset_pattern_blue.at(i) == '-'){bpat[i] = -1;}
0016 else if (preset_pattern_blue.at(i) == '*'){bpat[i] = 10;}
0017
0018 if (preset_pattern_yellow.at(i) == '+'){ypat[i] = 1;}
0019 else if (preset_pattern_yellow.at(i) == '-'){ypat[i] = -1;}
0020 else if (preset_pattern_yellow.at(i) == '*'){ypat[i] = 10;}
0021
0022 }
0023
0024
0025 int bunchnumber;
0026 int showerCutN, showerCutS;
0027 float n_x, n_y, s_x, s_y;
0028 float zdcN1_adc, zdcN2_adc, zdcS1_adc, zdcS2_adc;
0029 float veto_NF, veto_NB, veto_SF, veto_SB;
0030
0031 TTree *smdHits = new TTree();
0032 smdHits = new TTree("smdHits","smdHits");
0033 smdHits -> SetDirectory(0);
0034 smdHits -> Branch("bunchnumber", &bunchnumber, "bunchnumber/I");
0035 smdHits -> Branch("showerCutN", &showerCutN, "showerCutN/I");
0036 smdHits -> Branch("showerCutS", &showerCutS, "showerCutS/I");
0037 smdHits -> Branch("n_x", &n_x, "n_x/F");
0038 smdHits -> Branch("n_y", &n_y, "n_y/F");
0039 smdHits -> Branch("s_x", &s_x, "s_x/F");
0040 smdHits -> Branch("s_y", &s_y, "s_y/F");
0041 smdHits -> Branch("zdcN1_adc", &zdcN1_adc, "zdcN1_adc/F");
0042 smdHits -> Branch("zdcN2_adc", &zdcN2_adc, "zdcN2_adc/F");
0043 smdHits -> Branch("zdcS1_adc", &zdcS1_adc, "zdcS1_adc/F");
0044 smdHits -> Branch("zdcS2_adc", &zdcS2_adc, "zdcS2_adc/F");
0045 smdHits -> Branch("veto_NF", &veto_NF, "veto_NF/F");
0046 smdHits -> Branch("veto_NB", &veto_NB, "veto_NB/F");
0047 smdHits -> Branch("veto_SF", &veto_SF, "veto_SF/F");
0048 smdHits -> Branch("veto_SB", &veto_SB, "veto_SB/F");
0049
0050
0051 TRandom3 Rand;
0052 for (int i = 0; i < 1000000; i++)
0053 {
0054
0055 if (i % 100000 == 0){std::cout << "entry " << i << std::endl;}
0056 bunchnumber = Rand.Uniform(0,111);
0057
0058
0059
0060 n_y = Rand.Gaus(0.8, 1.5);
0061 s_y = Rand.Gaus(0, 1.5);
0062
0063 if (bpat[bunchnumber] == 1)
0064 {
0065 n_x = Rand.Gaus(-0.01, 1.5);
0066 }
0067 else if (bpat[bunchnumber] == -1)
0068 {
0069 n_x = Rand.Gaus(0.01, 1.5);
0070 }
0071
0072 if (ypat[bunchnumber] == 1)
0073 {
0074 s_x = Rand.Gaus(-0.01, 1.5);
0075 }
0076 else if (ypat[bunchnumber] == -1)
0077 {
0078 s_x = Rand.Gaus(0.01, 1.5);
0079 }
0080
0081 zdcN1_adc = Rand.Uniform(0,1000);
0082 zdcN2_adc = Rand.Uniform(0,1000);
0083 zdcS1_adc = Rand.Uniform(0,1000);
0084 zdcS2_adc = Rand.Uniform(0,1000);
0085 veto_NF = Rand.Uniform(0,1);
0086 veto_NB = Rand.Uniform(0,1);
0087 veto_SF = Rand.Uniform(0,1);
0088 veto_SB = Rand.Uniform(0,1);
0089
0090 showerCutN = Rand.Uniform(0,1) > 0.5 ? 1 : 1;
0091 showerCutS = Rand.Uniform(0,1) > 0.5 ? 1 : 1;
0092
0093 smdHits->Fill();
0094
0095 }
0096
0097 TFile *outfile = new TFile("FakeAsymmetry.root","RECREATE");
0098
0099 smdHits->Write();
0100 outfile->Write();
0101 outfile->Close();
0102
0103 }