240 likes | 398 Views
The Pico Analysis Framework: Status of Non-Objectivity-Based BABAR Analysis Software. BABAR Analysis Principles (Excerpts from http://www.slac.stanford.edu/BFROOT/www/Physics/Analysis/An_princ.txt ).
E N D
The Pico Analysis Framework: Status of Non-Objectivity-Based BABAR Analysis Software Marcel Kunze - RUB
BABAR Analysis Principles(Excerpts from http://www.slac.stanford.edu/BFROOT/www/Physics/Analysis/An_princ.txt) • All physics results from BABAR belong to the entire collaboration, not to an individual or group. • Access to data samples, analysis programs, and all detailed information about the analysis should be granted to the collaboration. • BABAR is a precision experiment; analyses will develop over an extended period of time. Reasonable access should be maintained throughout the entire process so that progress can be continuously monitored. • At the same time, it is recognized that creativity and new ideas from individual members of BABAR should be encouraged. • BABAR members should feel free to follow new ideas in the way they prefer. They should make their work available to the Collaboration early in the process, however, and cooperate with colleagues working in related areas. • All organized analysis efforts should be open and operate within the Physics Group structure. • BABAR should make every reasonable effort to adopt new technologies that would allow members to follow the analyses and the activity of the physics groups in real time (ideally!) from their home laboratories. • The Spokesperson will be responsible for making sure that these principles are followed by the Collaboration. • => Creativity and new ideas should be honored, but... Marcel Kunze - RUB
The Status of ROOT in BABAR • When I proposed to use ROOT some 2 years ago, I was told • by the computing management (excerpts from e-mail): • “ROOT isn't a well developed/maintained package yet ... Blabla ... • In fact I'd like to discourage using ROOT ... Blabla ... • I hate to be one who keeps suppressing new ideas but we really have -got- to keep focused on our immediate goals...“ • The current status has, however, a little bit improved: • Replacement for HBook/PAW (RooTuple Package) • Data store for micro/nano-DST (KAnGARoo Package) • Conditions database (RooCond Package) • Pico Analysis Framework (PAF Package)http://www.ep1.ruhr-uni-bochum.de/~marcel/PAF.Beta.html Marcel Kunze - RUB
Analysis Software – Beta/Option 7 PAF in BABAR context = Root database + PAF framework + Possibility of Beta analysis on TAG+MICRO level Marcel Kunze - RUB
PAF Goals • provide (fastest possible) access to TAG (Nano) and MICRO data + provide platform independent code • provide full functionality of the BABAR Beta analysis software package • use Beta candidates and refined tools, run existing BABAR analysis code with a minimum of changes + allow very fast simple analyses with minimum dependencies = Option 8 (w/o Beta), PAF = Professors’ Analysis Framework ? + provide access to the full ROOT analysis functions • provide backward compatibility when the data format evolves • provide fast turnaround (modular shared libs, small code size) + use CINT C++ interpreter for parameter setting and development “+” indicates areas where PAF is superior to BABAR Framework Marcel Kunze - RUB
PAF Key Development Ideas • Reuse the good ideas and code • Skip the bad things • (Object) Think… => Ingredients and ideas from:BABAR Framework, LHCB Gaudi, Argus KAL, Crystal Barrel CBoOff++, AliRoot, …+ List Processing a la DChain (S. Patton)+ TCLHEP (= ROOTified CLHEP, S. Kluth) Marcel Kunze - RUB
PAF Code Development:Extreme Programming • Small, engaged team of experts (<5) • Common code repository (CVS) • No code ownership • Permanent build and test cycle • Regular code refactory and release each two weeks(Internal reorganization w/o change of interfaces) • Be sure to sleep with the Anti-Patterns book under your pillow... => Similar to the ROOT development ! Marcel Kunze - RUB
PAF Basic Design • Data Streams • Managers (Services) • Selectors No separation into algorithm and data objects !=> Predefined sequences and paths of data and algorithm objects are always bottom-up (expensive = slow and resource hungry; all data are read before an algorithm starts)=> Intelligent objects allow for smart top-down operation ( cheap = data are read and objects constructed on dynamic request only) => BABAR Framework runs constantly slow on the scale of 10-100 Hz, PAF runs dynamically at 1-100 kHz ! Marcel Kunze - RUB
Data Stream Description TAG The BABAR TAG data AOD The BABAR micro data MCT The BABAR Monte-Carlo truth USR User definable persistent object stream PAF Data Streams => Typical volume: 300 GB/year (108 events) Where is ROOT helpful ? Data are organized in split ROOT trees => Split-mode enables selective reading on request => Split-mode allows for “smart” schema evolution => Easy network service by use of ROOTD Marcel Kunze - RUB
Reading Events via Network • Objectivity has an AMS (Advanced Multi-threaded Server) • ROOT has ROOTD (Root demon), forget about AFS/NFS !!! • How to use ROOTD to serve data from e.g. bbr-bochum2 ? • Start it and use it (via inetd) ! • Replace TFile with TNetFile in a client program(for PAF: AbsAnalysis, TPAFStream, PAFConditions and TRunDB) • and add a few lines of security gymnasticsTNetFile::SetUser("rootd"); TNetFile::SetPasswd("rootd@bbr-bochum2"); • => Feed the data from the desktop into the SLAC batch fram... • => Plans to set up a cheap, multi-TB distributed service in Bochum Marcel Kunze - RUB
Distributed Data Service Based on failsafe SuSE HyperCube: Dual PIII, 1 GB Mem., 430-640 GB RAID5 Linux, $25k each Switched GigaBit Ethernet everywhere(Servers and desktop) Start with 2 systems, expand according to need Giga Switch Marcel Kunze - RUB
PAF Services Description Application manager Construct an analysis from individual PAF and/or Beta modules Event manager Provide access to event data Directory manager Provide a file database to locate sets of runs Parameter manager Provide a unique means to set and modify parameters either from C++, file and/or command line Persistence manager Manage persistent object store (e.g. histograms) Object manager Manage transient objects (communication between modules) List manager Manager transient lists (communication between modules) Conditions manager Provide experimental conditions like PepBeams or BField Display manager Interactive, live 3D event display PAF Managers (Services) Marcel Kunze - RUB
Parameter Manager • Define parameters in a C++ program (macro)SetParm(key,value); // value = bool,int,double,string • Define parameters in a „TCL“ filekey set value # This is an example • Define parameters on the command line=> Clever use of the C++ scope operatoranalysis -verbose true -nev 1000Talk to an object:analysis -muonSelector::criteria veryLooseTalk to a module:analysis -PExample::verbose true Marcel Kunze - RUB
Main program to drive the PExample.cc Beta sample from the BABAR analysis workbook int main(int argc, char **argv){// Create an application manager and register servicesTPico PAF("Sample Beta Analysis");// Define output file for histogramsPAF.RegisterService(new TPicoPersistenceManager("PExample.root"));// Pass the command line to the analysisAbsBbrAnalysis *myAnalysis = new AbsBbrAnalysis(argc,argv);// Instantiate the physics modulePAFBbrModule *theModule = new PAFBbrModule(PExample("PExample","Sample Beta Module"));// Define a few parameterstheModule->SetParm("trackCandidates","chargedDefault","List of charged candidates");theModule->SetParm("verbose",kFALSE); // Set verbose modemyAnalysis->SetParm("cluster","system"); // Define the database locationmyAnalysis->SetParm("start",6000); // Define the first runmyAnalysis->SetParm("end",6020); // Define the last runmyAnalysis->Add(theModule);PAF.RegisterService(myAnalysis); // Note this analysisPAF.Run(); // Run the analysisreturn 0;} Code Example Marcel Kunze - RUB
Event Display • Fully interactive (picking, rotating and zooming) • Single and multiple views • 2D projections and 3D (OpenGL) Marcel Kunze - RUB
Pictures for the Contest Marcel Kunze - RUB
Track Selector Description TPicoChargedSelector Selection of charged particles TPicoPlusSelector Selection of positive particles TPicoMinusSelector Selection of negative particles TPicoNeutralSelector Selection of neutral particles TPicoTrueElectronSelector MCT tagged electrons TPicoTrueMuonSelector MCT tagged muons TPicoTruePionSelector MCT tagged pions TPicoTrueKaonSelector MCT tagged kaons TPicoTrueProtonSelector MCT tagged protons TPicoMassSelector Selection of mass window TPicoEnergySelector Selection of energy window TPicoMomentumSelector Selection of momentum window TPicoGoodTrackSelector Select good tracks Track Selectors Marcel Kunze - RUB
Particle Selector Description TPicoNNOElectronSelector Selection of electrons with neural nets TPicoNNOMuonSelector Selection of muons with neural nets TPicoNNOPionSelector Selection of pions with neural nets TPicoNNOKaonSelector Selection of kaons with neural nets TPicoNNOProtonSelector Selection of protons with neural nets TPicoElectronSelector Selection of electrons based on micro data (Recipe of Thorsten Brandt, BetaPid implementation of Dan Azzopardi) TPicoMuonSelector Selection of muons based on micro data (Recipe of the IFR muon group, BetaPid implementation of Dan Azzopardi) TPicoKaonSelector,TpicoKaon2Selector Selection of kaons based on micro data (Recipe of Guy Wormser/H.Schmücker, Implementation M. Kunze) Particle Selectors Marcel Kunze - RUB
Event Selector Description TPicoTwoprongTagSelector Requires at least two tracks of which the leading two are opposite in the CMS TPicoDimuonTagSelector Requires at least two high momentum tracks of which the leading two are approx. opposite in the CMS TPicoGammaGammaTagSelector Requires at least two high energetic photons of which the leading two are approx. opposite in the CMS TPicoBhabhaTagSelector Requires at least two high momentum tracks with a total energy above 3 GeV. The highest momentum should exceed 3 GeV and at least one track should deposit more than 2 GeV in the EMC TPicoBhabhaRatioTagSelector Requires a TPicoTwoprongSelector event with |Cos(theta)| < 0.8 and E(EMC)/P > 0.7 TPicoRadiativeBhabhaTagSelector Works with the IsRadiativeBhabha tag bit. TPicoHadronTagSelector Asks for more than three good tracks. TPicoHadronAodSelector Asks for more than two good tracks (20 hits, Pt>0.1GeV, DOCA<1cm, |z|<4cm) with matched EMC energy. The total charge is less than 4, at least one track should have Pt > 0.5 GeV TPicoDimuonAodSelector Asks for two opposite tracks in CMS at a shower energy between 50 MeV and 1 GeV. Event Selectors Marcel Kunze - RUB
Analysis example: B D*p (Helmut Schmücker) 0.05 < pp,soft < 0.8 0.09 < pp,soft < 0.24 Selection of good tracks, R2<0.35, (2.1GeV/c < pp,hard < 2.4GeV/c ), (E/p)p,hard > 0.7 yellow: unlike sign combinations 0.09 < pp,soft < 0.24, cos(B,phard)>0.5 SUN Ultra 1 (167 MHz): 1450 Hz 5 Million events processed within 1 hour in one run w/o a previous skim. Marcel Kunze - RUB
Where does ROOT help ? • Platform independence (same code basis on Unix and Windows) • Extremely optimized wrt. Resources • Dynamic loading of libraries upon actual need • Save money (no license fees, less disks…) • Persistent object bus for intelligent module communication (RTTI/Dictionary) • The event display took one rainy weekend(g2root plus AliRoot...) • Interactive work (No need for PAW/HBook) Marcel Kunze - RUB
What is still missing ? • Most BABAR code is hardly “Cintable“=> Use of tricks like perl scripts to prevent inclusion of some header files • Most BABAR interfaces use templates, Cint does not like=> Development of wrapping layers • Potential version conflicts with shared libraries=> Why not name them libBase.2.23.11.so ?=> Use of the operating systems‘ internal tagging mechanisms ? • Who implements the missing Windows GUI classes ? • More confidence into the potential of ROOT=> Still lots of concern (rather politically than technically motivated)=> People are not flexible enough (Still like PAW/HBOOK)=> Need of more education, tutorials and didactic material Marcel Kunze - RUB
Conclusions • A ROOT based interactive framework for fast analyses exists in BABAR • Interactive analysis work with ROOT is extremely promising • But: GUI is currently non-existent, have to run macros/programs • Beta/Option 7 is operational: Run original BABAR analysis modules on top of PAF (even on Windows 98/NT/2000, currently 8.2.11, 8.6.x will be next) • Same ROOT data format as in BABAR framework can be handled • Quantitative performance tests/results still missing (it’s fast enough) => Can even reuse ancient hardware or laptops to run BABAR analyses • Set up a massive distributed ROOTD based service in a remote site (Bochum) • PAF documentation/workbook needs to be improved • => Publication of analysis examples and programs is mandatory to attract a larger audience Marcel Kunze - RUB
KAnGARoo Event Input E.G. „Eid“,„Tag“, „Aod“ Input Module RooEventInput SetNextEventLocation() RooInputStream Name TFile TTree StreamList All Modules communicatevia AbsEvent/ProxyDict Conv.Man. Module RooCreateCM RooConverter Event Update Module RooEventUpdate Event() stream->inputEvent() converter->convertToTransient() User definable part, e.G.: RooScribes convertToPersistent()convertToTransient()addScribeForInput() Knows which objectto convert BtaIfrQualR BtaIfrQualR(const BtaIfrQual *)BtaIfrQual* transient() Knows howto convert Marcel Kunze - RUB