130 likes | 251 Vues
This document outlines the specifications and programming logic developed for a series of professional projects, primarily focused on muon lifetime measurement using Python. It includes a quality assurance framework that ensures the reliability of the software, exemplifying processes like event counting and data validation. The document serves as a detailed reference for future physicists and programmers, reducing the need for extensive manual consultation. Users can adapt the programs for different environments while retaining the integrity of the analysis. Projects also published on live web resources ensure broad accessibility.
E N D
By Ben Jolitz Specs, Data, and Web
Specs • Professional projects use specifications • Ensures quality • Ensures product does what it should. • Example: “Speedy” Alice and “Solid” Bill • Wrote eight page specification • Hammered out what needs to be done • Preliminary logic written up. • Useful for future years, provides short walk through without pawing through manuals and PPTs.
Specs II • All programs written in Python. • Extendable • Easy to adapt • Other languages (C, Perl, VB) were rejected due to maintenance reasons.
Specs -> Program • Muon lifetime's logic was to search for a “start” trigger, find that trigger's end, and check the time index spacing between the first triggers “end” and the next ones “start”. • 3μs < Space < 10μs. • ADOM logic: • Find the number of “events” in two minute intervals. • Ignore x seconds of data
balloon.py .... tim = int(columns[0], 16) if tim < self.last_tim : self.rollover_time += 4294967296 .... if data_timestamp >= self.trigger_next_interval : print "interval %04d: triggers %04d [lines %d-%d]" % ( self.interval_count, self.trigger_count, self.interval_first_line, line_count-1) self.interval_first_line = line_count self.interval_count = self.interval_count + 1 self.trigger_count = 0 self.trigger_next_interval = self.trigger_next_interval + self.interval_time
lifetime.py ... if columns[1] == '80' : # trigger self.trigger = True self.trigger_time = data_timestamp if self.trigger : self.trigger_accumulator = self.trigger_accumulator + [columns] ... if self.trigger and columns[5] == '00' : self.trigger = False self.trigger_accumulator = []
Issues • ADOM balloon.py has a “dropout” mechanism to remove invalid lines or typed in commands. • Prints out dropouts along with line number • Assumes all valid data lines are 16 columns. • “Smiley face” • Help • Issue fixed by simply tracking down the false data lines using the other dropout prints to get an idea, delete by hand or by command piping.
Data Lore • ADOM experiment was carried out on 25 July, 2007 at around 11AM. • Muon life time has not been carried out yet, due to equipment issues.
Data Lore II • Cannot account for the count drop on ground. • Lowest point is 18mins for both experiments. • Coindicidence? • Time dependent error? • Ground Data had 6 dropouts. • Mainly commands ['DS'], ... • Aerial Data had ~162 dropouts. • Data lines that were “mangled” (repeating section, transmission error).
Data Lore III • Potential sources of error: • Power fluctuating somewhere? • ADOM transmitter encountering interference? • Changing altitude suddenly • The null-modem serial piece was not fastened in and slightly loose. • Tether may have brought around flex error because the setup was bouncing all over the place, due to lack of stabilizers. • ADOM's balloon did not reach 1000ft. • Lack of sufficient lift. • Winds
Web site • Developed on live CMF webserver • http://zbenjamin.telemuse.net/ • http://objectis.net • http://www.zope.org • Content kept on scipp server. • XHTML 1.0/CSS 2/JScript 1.5 • Ported over with browser “View HTML” and “Save as” • Full versions working perfectly on FF 1.5+, IE 7+, Opera, Safari. • Partial version working on IE 5.5, 6
Round up • Wrote specification • Good for later years as logic reference • Data format section good as long Qnet boards “speak” that format • Two programs: • Proven “balloon.py” program • Invoked by python balloon.py datafile.txt [secs to ignore] ([] optional) • Experimental “lifetime.py” program • Clean website supported by standards.