87def ntupleWrite(ctau,fn,Lmin,Lmax,startZ,endZ,SmearBeam,mres,gax,old):
90 startZ = float(startZ)
92 SmearBeam = float(SmearBeam)
93 wdir = os.environ[
'ALPACABIN']
94 with open(wdir+
"/outputs/output_"+str(mres)+
"_"+str(gax)+
".dat",
"r")
as fp:
96 if "Cross section" in line:
98 xs=line[3]+
"_"+line[5]
100 inputFile=old+
"/"+
"alp_m"+str(mres)+
"_g"+str(gax)+
"_xs"+str(xs)+
".root"
101 f=ROOT.TFile(inputFile,
"recreate")
102 ntup=ROOT.TNtuple(
"MCTrack",
"Track Informations",
"event:track:pdg:px:py:pz:x:y:z:parent:decay:e:tof:w")
103 for i,j
in enumerate(range(5,len(fn),9)):
104 LS = ROOT.gRandom.Uniform(Lmin*100.,Lmax*100.)
105 zinter = ROOT.gRandom.Uniform(startZ,endZ)
106 dx, dy = ROOT.gRandom.Uniform(-1,+1)*SmearBeam, ROOT.gRandom.Uniform(-1,+1)*SmearBeam
110 px,py,pz=float(tr[7]),float(tr[8]),float(tr[9])
111 p = math.sqrt(px**2.+py**2.+pz**2.)
113 daux,dauy,dauz= dx+lam*px,dy+lam*py,zinter+lam*pz
116 ntup.Fill(int(i),int(0),int(9900015),px,py,pz,dx,dy,zinter,int(-1),float(0),float(tr[10]),float(0),w)
119 ntup.Fill(int(i),int(1),int(dau1[1]),float(dau1[7]),float(dau1[8]),float(dau1[9]),daux,dauy,dauz,int(0),float(1),float(dau1[10]),float(dau1[15])/10./c_light,w)
120 ntup.Fill(int(i),int(2),int(dau2[1]),float(dau2[7]),float(dau2[8]),float(dau2[9]),daux,dauy,dauz,int(0),float(1),float(dau2[10]),float(dau2[15])/10./c_light,w)
125def runEvents(mres,gax,nev,Lmin,Lmax,startZ,endZ,SmearBeam):
126 print(
'ALPACA is starting for mass of {} GeV with photon coupling coeffiecient {} GeV^-1.'.format(mres,gax))
127 pdg = ROOT.TDatabasePDG.Instance()
128 pdg.AddParticle(
'a',
'ALP', mres,
False, gax, 0.,
'a', 9900015)
129 wdir = os.environ[
'ALPACABIN']
133 rn=
"./alpaca < input.DAT"
135 print(
'ALPACA generated the events.')
136 pa=
"./evrecs/evrec_"+str(mres)+
"_"+str(gax)+
".dat"
139 print(
'Events are recording into a ntuple.')
140 inputFile =
ntupleWrite(ctau,fn,Lmin,Lmax,startZ,endZ,SmearBeam,mres,gax,old)
142 print(
'Ntuple is ready for the reading.')