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..."
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') viewer2.show() try: counter = input('Hit ENTER when you are ready to close the viewer') except: print "done with this example..."
# 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
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') viewer2.show() try: counter = input('Hit ENTER when you are ready to close the viewer') except: print "done with this example..."