The GammaWare package

27
The GammaWare package Olivier Stézowski (on behalf of the Data Analysis Team) Data Analysis Workshop, Legnaro, November 9-10 2009 (including ADF)

description

The GammaWare package. ( including ADF). Olivier Stézowski (on behalf of the Data Analysis Team) Data Analysis Workshop, Legnaro , November 9-10 2009. Evolution of the package. DAQ. Protoype : Simu from LS. Interface GEANT4 generators. ADF Library. 2004. 2009. - PowerPoint PPT Presentation

Transcript of The GammaWare package

Page 1: The  GammaWare  package

The GammaWare package

Olivier Stézowski(on behalf of the Data Analysis

Team)Data Analysis Workshop, Legnaro,

November 9-10 2009

(including ADF)

Page 2: The  GammaWare  package

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 » !!

Page 3: The  GammaWare  package

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 !

Page 4: The  GammaWare  package

GammaWare current situation

Design : avoid (circular) dependancies between libraries

Add-ons for ROOT

DAQ

(PSA, Tracking not in but could be plugged)

Page 5: The  GammaWare  package

« Narval terminology »

Producer

Filter

Consumer

C/C++ code loaded in Narval (ADA)

(single library)

Distributed system : many computers connected by the network

Page 6: The  GammaWare  package

A topology : chain of analysis

Page 7: The  GammaWare  package

« 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 !!)

Page 8: The  GammaWare  package

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

Page 9: The  GammaWare  package

Agata Data Flow @ different stages

Page 10: The  GammaWare  package

Actions on an Agata Data FlowComplex Data Flow BUT an algorithm just needs the Frames it

could processed !! DFTrigger

Page 11: The  GammaWare  package

Algorithm

DataFlow Reader … (reconfiguration)

Trigger

Frames

Frames

Owne

d by

Trig

ger

Fram

e are

shar

ed ob

jects

!!

Page 12: The  GammaWare  package

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( … )

Page 13: The  GammaWare  package

The DataInterface

Page 14: The  GammaWare  package

Communications Narval - ADF

ActorInput Data Output Data

Log GRU

Set/GetGlobalParameters()

Algo_pathWatchers

messages spectra

conf filesOutput Data

from time to time ..

Online / offline !

Page 15: The  GammaWare  package

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

Page 16: The  GammaWare  package

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 !

Page 17: The  GammaWare  package

Dump Frames on files

Check Keys

Signals from the crystals

Fold, singles and gamma-gamma

matrix

Rate in Crystals (core/segments)

WatcherClients (FrameDispacher)

Page 18: The  GammaWare  package

From the just finished experiment

Watcher on any Frame (AgataKey)

Page 19: The  GammaWare  package

From the just finished experiment

Watcher on event:data:psa (RateDisplay)

Page 20: The  GammaWare  package

From the just finished experiment

Page 21: The  GammaWare  package

From the just finished experiment

Doppler correction available (VertexFrame) …. to be implemented …

Watcher on data:tracked (Coinc2D)

Page 22: The  GammaWare  package

From the just finished experiment

Watcher ShowSignals on almost real online data !!!

Page 23: The  GammaWare  package

From the just finished experiment

Watcher TrackDisplay on almost real online data !!!

Page 24: The  GammaWare  package

Other parts of the GammaWare

• SpectrumPlayer• LevelSchemePlayer• Graphical Fit• Spectra converters• All ROOT facilities for free !

• γ-γ interactive gating … (to be revisited)

Page 25: The  GammaWare  package

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

Page 26: The  GammaWare  package

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);

}}

}

Page 27: The  GammaWare  package

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)