mcsTop = my_QRA.getTopMuCS() mcsBot = my_QRA.getBottomMuCS() mcsTrj = my_QRA.getTrj() mcsTrjCon = my_QRA.getTrj_con() mcsTrjMuCS = my_QRA.getTrj_mucs() mcsHalfLine = my_QRA.getHalfLine() mcsLineSeg = my_QRA.getLineseg() run = my_QRA.getRun() subrun = my_QRA.getSubrun() event = my_QRA.getEvent() print "run: ", run print "subrun:", subrun print "event: ", event # add objects to viewer viewer.clear() viewer.add(fidVol,'FV.','k') viewer.add(mcsTop,'Top','r') viewer.add(mcsBot,'Bot','m') #for x in range(0,len(mcsTrj)): for i in xrange(len(mcsTrj)): viewer.add(mcsTrj[i],"Out","b") viewer.add(mcsLineSeg[i],'Prj ','y') #viewer.add(mcsHalfLine[i],"halfline","y") for j in xrange(len(mcsTrjCon)): viewer.add(mcsTrjCon[j],"In","g") for k in xrange(len(mcsTrjMuCS)): viewer.add(mcsTrjMuCS[k],"Tr_mucs","r") print "STOP!!!!!!!!!I am a MuCS through-going MuON !!!!!!!!" #for h in xrange(len(mcsHalfLine)): #print h
from ROOT import geoalgo from basictool.geoviewer import GeoViewer import matplotlib.pyplot as plt import random as rnd import time import datetime plt.ion() tottime = 0 # track: viewer = GeoViewer() viewer._use_box = False geoAlgo = geoalgo.GeoAlgo() line1 = geoalgo.LineSegment(105.727, -66.7871, 814.841, 105.438, -67.4666, 815.464) line2 = geoalgo.LineSegment(105.229, -67.5519, 815.806, 108.149, -62.1392, 810.246) pt1 = geoalgo.Vector() pt2 = geoalgo.Vector() d = geoAlgo.SqDist(line1,line2,pt1,pt2) line3 = geoalgo.LineSegment(pt1,pt2) viewer.add(line1,'ln1','b') viewer.add(line2,'ln2','r') viewer.add(line3,'ln3','k') print 'distance is %.02f'%d viewer.show() try: counter = input('Hit ENTER when you are ready to close the viewer') except: print "done with this example..."
tottime = 0 # track: viewer2 = GeoViewer() viewer2._use_box = False geoAlgo = geoalgo.GeoAlgo() ntries = 1000 npoints = 800 #for x in xrange(ntries): track = ertool.Track() #viewer2._fig.clear() #for n in xrange(npoints): #time.sleep(0.01) point = geoalgo.Vector(rnd.random(),rnd.random(),rnd.random()) n = 0 viewer2.add(point,'pt %i'%n,'k') track.push_back(point) viewer2.add(point,'pt %i'%n,'k') track.push_back(point) viewer2.add(point,'pt %i'%n,'k') track.push_back(point) viewer2.add(point,'pt %i'%n,'k') track.push_back(point) t = time.time() sphere = geoAlgo.boundingSphere(track) tdelta = time.time()-t tottime += tdelta #print "sphere center is: [%.02f,%.02f,%.02f]"%(sphere.Center()[0],sphere.Center()[1],sphere.Center()[2]) #print "sphere radius is: %f"%sphere.Radius() print "Time per sphere with %i points is: %.02f [us]"%(npoints,1000000*(tottime/float(ntries))) viewer2.add(sphere,'','r')
# Make a fake track and shower # shower: shrDir = geoalgo.Vector(0.3, 1.0, 0.5) # direction shrStart = geoalgo.Vector(10, -10, 30) # start point shower = ertool.Shower(shrStart, shrDir, 20, 5) shower._energy = 100 shower._dedx = 2.2 # track: track = ertool.Track() for n in xrange(11): track.push_back( geoalgo.Vector(-45.1 + (10 + 45) * (n / 10.), 15.1 - (10 + 15) * (n / 10.), 4.1 + (30 - 4) * (n / 10.))) track._energy = 435 plt.ion() viewer = GeoViewer() viewer.add(shower, 'shower', 'b') viewer.add(track, 'track', 'r') viewer.show() try: counter = input('Hit ENTER when you are ready to close the viewer') except: print "Continuing to analys..." # are these shower and track correlated? is the shower a michel? dist = shower.Start().Dist(track.back()) print "distance between shower start and track end is: %f" % dist
mcsTop = my_QRA.getTopMuCS() mcsBot = my_QRA.getBottomMuCS() mcsTrj = my_QRA.getTrj() mcsTrjCon = my_QRA.getTrj_con() mcsTrjMuCS = my_QRA.getTrj_mucs() mcsHalfLine = my_QRA.getHalfLine() mcsLineSeg = my_QRA.getLineseg() run = my_QRA.getRun() subrun = my_QRA.getSubrun() event = my_QRA.getEvent() print "run: ", run print "subrun:", subrun print "event: ", event # add objects to viewer viewer.clear() viewer.add(fidVol, 'FV.', 'k') viewer.add(mcsTop, 'Top', 'r') viewer.add(mcsBot, 'Bot', 'm') #for x in range(0,len(mcsTrj)): for i in xrange(len(mcsTrj)): viewer.add(mcsTrj[i], "Out", "b") viewer.add(mcsLineSeg[i], 'Prj ', 'y') #viewer.add(mcsHalfLine[i],"halfline","y") for j in xrange(len(mcsTrjCon)): viewer.add(mcsTrjCon[j], "In", "g") for k in xrange(len(mcsTrjMuCS)): viewer.add(mcsTrjMuCS[k], "Tr_mucs", "r") print "STOP!!!!!!!!!I am a MuCS through-going MuON !!!!!!!!" #for h in xrange(len(mcsHalfLine)): #print h
from ROOT import geoalgo from basictool.geoviewer import GeoViewer import matplotlib.pyplot as plt import random as rnd import time import datetime plt.ion() tottime = 0 # track: viewer = GeoViewer() viewer._use_box = False geoAlgo = geoalgo.GeoAlgo() line1 = geoalgo.LineSegment(0, 0, 0, 0, 0, 1) line2 = geoalgo.LineSegment(1, 0, 0, 1, 0, 1) pt1 = geoalgo.Vector() pt2 = geoalgo.Vector() d = geoAlgo.SqDist(line1, line2, pt1, pt2) line3 = geoalgo.LineSegment(pt1, pt2) viewer.add(line1, 'ln1', 'b') viewer.add(line2, 'ln2', 'r') viewer.add(line3, 'ln3', 'k') print 'distance is %.04f' % d viewer.show() try: counter = input('Hit ENTER when you are ready to close the viewer') except: print "done with this example..."
# shower start point shr_x = simch._shr_x shr_y = simch._shr_y shr_z = simch._shr_z shr_px = simch._shr_px shr_py = simch._shr_py shr_pz = simch._shr_pz shr_E = simch._shr_E shr_start = geoalgo.Vector_t(shr_x,shr_y,shr_z) shr_dir = geoalgo.Vector_t(shr_px,shr_py,shr_pz) shr_dir.Normalize() shr_axis = geoalgo.Trajectory() shr_axis.push_back(shr_start) shr_axis.push_back(shr_start+shr_dir) viewer.add(shr_start,'Start','r') viewer.add(shr_axis,'Dir','r') x_v_all = np.array(simch._x_v) print 'x position vector : ' print x_v_all # if no entries -> continue if (len(x_v_all) == 0): continue x_v = [] xmin = min(x_v_all) xmax = max(x_v_all) dx = xmax-xmin y_v_all = np.array(simch._y_v)
shower1._energy = 100 shower1._dedx = 2.2 # shower2: shrDir = geoalgo.Vector(-0.33,1.0,0.5)# direction shrStart = geoalgo.Vector(10,-11,30) # start point shower2 = ertool.Shower(shrStart,shrDir,20,5) shower2._energy = 100 shower2._dedx = 2.2 # load viewer plt.ion() viewer = GeoViewer() viewer._use_box = False; viewer.add(shower1,'shower1','b') viewer.add(shower2,'shower2','b') #viewer.add(track,'track','r') viewer.show() try: counter = input('Hit ENTER when you are ready to close the viewer') except: print "Continuing to analys..." # figure out the impact parameter between the two: # use AlgoFindRelationship algo = ertool.AlgoFindRelationship() vertex = geoalgo.Vector(3) IP = algo.FindClosestApproach(shower1,shower2,vertex) # segments connecting vertex to start points
# Make a fake track and shower # shower: shrDir = geoalgo.Vector(0.3,1.0,0.5)# direction shrStart = geoalgo.Vector(10,-10,30) # start point shower = ertool.Shower(shrStart,shrDir,20,5) shower._energy = 100 shower._dedx = 2.2 # track: track = ertool.Track() for n in xrange(11): track.push_back(geoalgo.Vector(-45.1+(10+45)*(n/10.),15.1-(10+15)*(n/10.),4.1+(30-4)*(n/10.))) track._energy = 435; plt.ion() viewer = GeoViewer() viewer.add(shower,'shower','b') viewer.add(track,'track','r') viewer.show() try: counter = input('Hit ENTER when you are ready to close the viewer') except: print "Continuing to analys..." # are these shower and track correlated? is the shower a michel? dist = shower.Start().Dist(track.back()) print "distance between shower start and track end is: %f"%dist
tottime = 0 # track: viewer2 = GeoViewer() viewer2._use_box = False geoAlgo = geoalgo.GeoAlgo() ntries = 1000 npoints = 800 #for x in xrange(ntries): track = ertool.Track() #viewer2._fig.clear() #for n in xrange(npoints): #time.sleep(0.01) point = geoalgo.Vector(rnd.random(), rnd.random(), rnd.random()) n = 0 viewer2.add(point, 'pt %i' % n, 'k') track.push_back(point) viewer2.add(point, 'pt %i' % n, 'k') track.push_back(point) viewer2.add(point, 'pt %i' % n, 'k') track.push_back(point) viewer2.add(point, 'pt %i' % n, 'k') track.push_back(point) t = time.time() sphere = geoAlgo.boundingSphere(track) tdelta = time.time() - t tottime += tdelta #print "sphere center is: [%.02f,%.02f,%.02f]"%(sphere.Center()[0],sphere.Center()[1],sphere.Center()[2]) #print "sphere radius is: %f"%sphere.Radius() print "Time per sphere with %i points is: %.02f [us]" % ( npoints, 1000000 * (tottime / float(ntries)))
print 'new event...' retrj = my_QRA2.Getretrj() mctrj = my_QRA2.Getmctrj() w8devi = my_QRA2.Getw8devi() devi = my_QRA2.Getdevi() g4sum = my_QRA2.GetSum_g4() plsum = my_QRA2.GetSum_PL() trkid = 0 viewer.clear() if len(retrj) > 0 and len(mctrj) > 0: pt_mc_s = mctrj[0][0] pt_re_s = retrj[0][0] line_ss = geoalgo.LineSegment(pt_mc_s, pt_re_s) viewer.add(line_ss, " ", "g") dist_ss = retrj[0][0].Dist(mctrj[0][0]) print 'distance between mc and re trk start point is', dist_ss, 'cm !??!' print 'weighted deviation for this mc/reco track is ', w8devi, 'cm !??!' print 'standard deviation for this mc/reco track is ', devi, 'cm !??!' for a in range(0, len(mctrj)): pt0 = mctrj[a][0] if len(mctrj[a]) < 5: break for aa in range(1, 5): pt1 = mctrj[a][aa] pt2 = mctrj[a][aa - 1] dist = pt0.Dist(pt1) if dist > 10: break