Post on 24-Feb-2016
description
The GammaWare package
Olivier Stézowski(on behalf of the Data Analysis
Team)Data Analysis Workshop, Legnaro,
November 9-10 2009
(including ADF)
Evolution of the package
2004 2009
Protoype:Simu from LS
Organisation:•Serveur SVN•Doc•Bugtracker…
ADF Library
Core library / tools /Interface
to other frameworks+ …
DAQ
Interface GEANT4generators
« Collaborative development » !!
Framework : collaborative work• Work on the same files
(subversion)• Developers / users – tags, releases• Documentation !• Interaction (bug tracker, ticket system)• Design proposals : design before writing• …
Not a huge success … so far …
New !
GammaWare current situation
Design : avoid (circular) dependancies between libraries
Add-ons for ROOT
DAQ
(PSA, Tracking not in but could be plugged)
« Narval terminology »
Producer
Filter
Consumer
C/C++ code loaded in Narval (ADA)
(single library)
Distributed system : many computers connected by the network
A topology : chain of analysis
« ADF view » : Blocks of Frames
Key, Frame have a name, a type and version numbers
Ex: « agata » , « data:psa », (1,0)
Strongly processed data flow likely to change over the years (version !!)
DataFrame
ConfigurationFrame
CompositeFrame : made of three DataFrame
An .adf data flow or file
Agat
a Ke
ysFr
ames
Full definition of the DataFlow !!
agata0xFA0000000xFF000000 conf0xFA0002000xFF000F00conf:global0xFA0002000xFFFFFFFF conf:crystal0xFA0102010xFFFFFFFF conf:psa0xFA0102020xFFFFFFFF conf:ranc00xFA0102A00xFFFFFFFF conf:ranc10xFA0102A10xFFFFFFFF conf:ranc20xFA0102A20xFFFFFFFF data0xFA0001000xFF000F00 data:crystal0xFA0101010xFFFFFFFFdata:ccrystal0xFA0101110xFFFFFFFF data:psa0xFA0101020xFFFFFFFF event:data:psa0xFA0101030xFFFFFFFF event:data0xFA0101040xFFFFFFFF data:tracked0xFA0101050xFFFFFFFFdata:ranc00xFA0101A00xFFFFFFFF data:ranc10xFA0101A10xFFFFFFFF data:ranc20xFA0101A20xFFFFFFFF meta0xFA0011000xFF00FF00meta:vertex0xFA0111000xFFFFFFFF
agata0xFA000000 conf
0xFA000200conf:global0xFA000200data
0xFA000100data:crystal0xFA010100data:ccrystal0xFA010111data:psa
0xFA010102event:data:psa0xFA010103event:data0xFA010104data:tracked0xFA010105data:ranc00xFA0101A0meta
0xFA001100meta:vertex0xFA011100
Agata Data Flow @ different stages
Actions on an Agata Data FlowComplex Data Flow BUT an algorithm just needs the Frames it
could processed !! DFTrigger
Algorithm
DataFlow Reader … (reconfiguration)
Trigger
Frames
Frames
Owne
d by
Trig
ger
Fram
e are
shar
ed ob
jects
!!
Actions on an Agata Data FlowDefinition of a DFTrigger
AgataFrameTrigger *t = new AgataFrameTrigger(“OnTrackAndAncillary“);
SharedFP *sfp_event = t->Add(”event:data” …, IsConsumed , … );
SharedFP *sfp_track = t->Add(”data:tracked”, …, IsConsumed , … );
SharedFP *sfp_anc0 = t->Add(”data:ranc0”, …, IsConsumed , … );
t->SetOutputFrame( … );
New !
Reconfiguration of the Data Flow, pointers likely to be deleted :
SharedFP are safeA given version of an algorithm works with some versions of Frames :
controled with SharedFP virtual void SetKeyChangeFunction( … )virtual void SetFrameChangeFunction( … )
The DataInterface
Communications Narval - ADF
ActorInput Data Output Data
Log GRU
Set/GetGlobalParameters()
Algo_pathWatchers
messages spectra
conf filesOutput Data
from time to time ..
Online / offline !
Emulators
Simple topology could be emulated without Narval (see in gammaware) :
src/adf/dev/test0.1.csrc/adf/dev/test0.2.cdemos/adf/Emulator.C
+ … others (Joa)
c programsROOT macros
Watchers on a Trigger Watcher, WatcherWithTags :
Base classes for a watcher
FrameDispacher (consumer) :Dispatchs a Frame (trigger) to Watchers
WatcherClient (emulator) :Collects a data block and sends it to a
FameDispatcher
class MyWatcher : public Watcher{… Watcher( … );… virtual void Exec( … );…}
Declaration of spectra !Fill them !
Dump Frames on files
Check Keys
Signals from the crystals
Fold, singles and gamma-gamma
matrix
Rate in Crystals (core/segments)
WatcherClients (FrameDispacher)
From the just finished experiment
Watcher on any Frame (AgataKey)
From the just finished experiment
Watcher on event:data:psa (RateDisplay)
From the just finished experiment
From the just finished experiment
Doppler correction available (VertexFrame) …. to be implemented …
Watcher on data:tracked (Coinc2D)
From the just finished experiment
Watcher ShowSignals on almost real online data !!!
From the just finished experiment
Watcher TrackDisplay on almost real online data !!!
Other parts of the GammaWare
• SpectrumPlayer• LevelSchemePlayer• Graphical Fit• Spectra converters• All ROOT facilities for free !
• γ-γ interactive gating … (to be revisited)
Conclusions & perspectives
• More stabilities• More tests/benchmarks• More documentations• New « fast » features (« anti-trigger »)• LevelShemePlayer • New watchers ?
• What else ?
• Long term evolutions ?
Postdoc in Lyon
Coinc2D::Coinc2D() : TrackedWatcher("Coinc2D","Check singles and build a gamma-gamma matrix"),fSingles(0x0),fSinglesDoppler(0x0),fFold(0x0),fGxG(0x0)
{fSingles = new TH1F("Singles","Singles",6000,0,6000);AddToPool(fSingles);fSinglesDoppler = new TH1F("SinglesDoppler","Singles with Doppler correction",6000,0,6000);TagOn(fSinglesDoppler);AddToPool(fSinglesDoppler);fFold = new TH1F("Fold","Fold distributions",10,0,10);TagOn(fFold);AddToPool(fFold);fGxG = new TH2F("GxG","Gamma Gamma matrix",2000,0,1000,2000,0,1000);AddToPool(fGxG);
}void Coinc2D::Exec(Option_t */*option*/) {
const GammaTrackedInterface *data = GetCstDataPointer<GammaTrackedInterface>(fFrame);
// now fill histogramsUInt_t fold = data->GetNbGamma();fFold->Fill( fold );for (UShort_t i = 0u; i < fold; i++) {
const TrackedHit *gamma1 = data->GetGamma(i); Double_t edc1 = VertexWatcher::theCurrentVertex()->DopplerCorrection(gamma1);fSingles->Fill(gamma1->GetE());fSinglesDoppler->Fill(edc1);for (UShort_t j = i+1u; j < fold; j++) {
const TrackedHit *gamma2 = data->GetGamma(j); Double_t edc2 = VertexWatcher::theCurrentVertex()-
>DopplerCorrection(gamma2);fGxG->Fill(edc1,edc2); fGxG->Fill(edc2,edc1);
}}
}
ConfAgent and ADF.conf#////ADF::ConfAgent_beg//// Agata 1 Init# `Endian: kLittle#KeyFactory: DefaultKeyFactory: Agata#FrameFactory: Agata# PrimaryKey: Default FS 0 1 #AutoConf: Agata conf:global 2 0 Agata conf:global 0 0##////ADF::ConfAgent_end//// #////ADF::AgataKeyFactory_beg//// InitAgata 0xFA0000000xFF000000Conf 0xFA0002000xFF00FF00conf:global 0xFA0002000xFFFFFFFF conf:crysta l0xFA0102010xFFFFFFFF conf:psa 0xFA0102020xFFFFFFFF Data 0xFA0100000xFFFF0000 data:crystal 0xFA0101010xFFFFFFFF data:psa 0xFA0101020xFFFFFFFF event:data:psa 0xFA0101030xFFFFFFFF event:data 0xFA0101040xFFFFFFFFdata:tracked 0xFA0101050xFFFFFFFF##////ADF::AgataKeyFactory_end////#
# Current Frames going through the data flow###Frame: Agata agata 2 0 Agata agata 0 0Frame: Agata data:tracked 2 0 Agata data:tracked 65000 1Frame: Agata data:crystal 2 0 Agata data:crystal 65000 0
+
One in the distributionOne in the algo path
+ Full definition of the Keys(for the Keyfactory)