the gammaware package olivier stézowski (on behalf of the data analysis team) data analysis...
TRANSCRIPT
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 …
Ne
w !
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
« 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
Ag
ata
Keys
Fra
mes
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
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
Ow
ned b
y T
rigger
Fram
e ar
e sh
ared
obj
ects
!!
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( … );
Ne
w !
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( … )
Communications Narval - ADF
ActorInput Data Output Data
Log GRU
Set/GetGlobalParameters()
Algo_path
Watchers
messages spectra
conf files
Output 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 programs
ROOT 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
Doppler correction available (VertexFrame) …. to be implemented …
Watcher on data:tracked (Coinc2D)
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)