Home » PANDA » PandaRoot » Meetings » PandaRoot meeting, Wednesday 21th of October, 10:00, EVO
|
|
Re: PandaRoot meeting, Wednesday 21th of October, 10:00, EVO [message #9588 is a reply to message #9587] |
Tue, 20 October 2009 20:44 |
Mohammad Al-Turany
Messages: 518 Registered: April 2004 Location: GSI, Germany
|
first-grade participant |
From: *dip.t-dialin.net
|
|
Hi,
Unfortunately I will not be able to participate in the meeting tomorrow, but any way I have some remarks and questions about the talk above:
- There is no initialization in root macros! You only specify where your parameters should be initialized from, ASCII, ROOT or Oracle.
- Hardcoded parameters is something which the subsystem developers should avoid
- Global initialization task containing the individual subsystem initializations :
- The Runtimedb is such a thing
- Initialization task for the individual subsystems
- In each subsystem there is a parameter container factory that is a sub-class of FairContFact where the parameter containers have to be created for this sub system.
- Each sub-system can implement his parameters as a sub-class of FairParGenericSet, with this the I/O for the parameters is already implemented for ASCII, ROOT and Oracle. Or it can implements directly the FairParSet and deliver themselves the I/O
- The Idea behind Init and Re-Init is to be a defined place to initialize or re-initialize a task, moreover tasks can be added in any order or as subtasks of each other, that is why it is important that each task know how to initialize it self, and all tasks has access to the static runtime data base and with get or find container they can access the containers they need and then the parameter themselves.
Questions:
- What do you mean by dictionary in this context? what does it have more than parameter definitions and values? How different is it from PndEmcDigiPar for example?
- Where do you need to set a branch address? Usually this is hidden from the user? some people hardcore the branch name of the input for there task in the task init, and if the task can only analyze or work with this specific input then it is not that bad! others make the branch name as argument of the task ctor and then they pass it to the GetObject. So is that what you are speaking about here or something else?
- Which data base you are speaking about here?it is not clear for me, if you mean our run time data base and the oracle behind or something else?
- Event time stamp as key to query database! How do you think this should be implemented? And which parameters are changing event by event? Normally some parameters could change within a run and this is usually detected and trigger a re-init of the runtimedb and the reconstruction or analysis tasks.
The most important thing in parameter handling is the version management system, what ever you use for the parameter handling or parameter I/O you need a realistic version management even if you have oracle or MySQL as I/O.
regards
Mohammad
|
|
|
coordinates.... [message #9590 is a reply to message #9586] |
Tue, 20 October 2009 22:36 |
Johan Messchendorp
Messages: 693 Registered: April 2007 Location: University of Groningen
|
first-grade participant |
From: *xs4all.nl
|
|
Title: pandaroot
Description: pandaroot
Community: Panda
Meeting Access Information:
- Meeting URL
http://evo.caltech.edu/evoGate/koala.jnlp?meeting=MsMiMI2n2aDtDl9u9IDt9s
- Phone Bridge
ID: 1328260
Central European Summer Time (+0200)
Start 2009-10-21 09:30
End 2009-10-21 13:00
Japan Standard Time (+0900)
Start 2009-10-21 16:30
End 2009-10-21 20:00
Eastern Daylight Time (-0400)
Start 2009-10-21 03:30
End 2009-10-21 07:00
Pacific Daylight Time (-0700)
Start 2009-10-21 00:30
End 2009-10-21 04:00
EVO Phone Bridge Telephone Numbers:
---------------
- USA (Caltech, Pasadena, CA)
+1 626 395 2112
- Switzerland (CERN, Geneva)
+41 22 76 71400
- Slovakia (UPJS, Kosice)
+421 55 234 2420
- Italy (INFN, several cities)
http://server10.infn.it/video/index.php?page=telephone_numbers
Enter '4000' to access the EVO bridge
- Germany (DESY, Hamburg)
+49 40 8998 1340
- USA (BNL, Upton, NY)
+1 631 344 6100
- United Kingdom (University of Manchester)
+44 161 306 6802
- Australia (ARCS)
+61
Adelaide 08 8463 1011
Brisbane 07 3139 0705
Canberra 02 6112 8742
Hobart 03 623 70281
Melbourne 03 8685 8362
Perth 08 6461 6718
Sydney 02 8212 4591
- Netherlands (Nikhef, Amsterdam)
+31 20 7165293
Dial '2' at the prompt
- Canada (TRIUMF, Vancouver)
+1 604 222 7700
- Czech Republic (CESNET, Prague)
+420 95 007 2386
---------------
|
|
|
Re: PandaRoot meeting, Wednesday 21th of October, 10:00, EVO [message #9594 is a reply to message #9588] |
Wed, 21 October 2009 20:11 |
Bertram Kopf
Messages: 110 Registered: March 2006
|
continuous participant |
From: *ep1.ruhr-uni-bochum.de
|
|
Hi Mohammad,
Mohammad Al-Turany wrote |
What do you mean by dictionary in this context? what does it have more than parameter definitions and values? How different is it from PndEmcDigiPar for example?
|
How a dictionary is defined in general, you can find for example in wikipedia at:
http://en.wikipedia.org/wiki/Data_dictionary
In our software, we normally use condition objects which change frequently. Therefore we need a general mechanism to store and retrieve these objects.
To do this in a performant way, it's common use to add a layer of lazy database proxies. A lazy proxy creates objects only on request. In addition such a proxy can cache things comming from the database. Using a dictionary makes these proxies available everywhere in the code in a flexible way.
Mohammad Al-Turany wrote |
Where do you need to set a branch address? Usually this is hidden from the user? some people hardcore the branch name of the input for there task in the task init, and if the task can only analyze or work with this specific input then it is not that bad! others make the branch name as argument of the task ctor and then they pass it to the GetObject. So is that what you are speaking about here or something else?
|
Of course, names of branches, trees and files have to be hidden from the user, and in addition also from any specific code in the sim/digi/reco and analysis.
Mohammad Al-Turany wrote |
Which data base you are speaking about here?it is not clear for me, if you mean our run time data base and the oracle behind or something else?
|
I am speaking about the condition database. The name "rundatabase" suggests that only run or job based changes are supported. As I tried to point out, one should also support event-to-event changes.
Mohammad Al-Turany wrote |
Event time stamp as key to query database! How do you think this should be implemented? And which parameters are changing event by event? Normally some parameters could change and this is usually detected and trigger a re-init of the runtimedb and the reconstruction or analysis tasks.
|
I think that it is not that bad to use the time informations for the request to the database. The validity of specific parameters/objects can be realized via certain time intervals. In principle all calibration, alignment and environmental data can change from event to event.
Best regards,
Bertram.
|
|
|
Re: PandaRoot meeting, Wednesday 21th of October, 10:00, EVO [message #9595 is a reply to message #9594] |
Wed, 21 October 2009 21:04 |
Mohammad Al-Turany
Messages: 518 Registered: April 2004 Location: GSI, Germany
|
first-grade participant |
From: *dip.t-dialin.net
|
|
Hi Bertram,
Thanks for the answers and just one thing, the run time data base is an interface which make the communication with the condition data base transparent in a sense that you just change the I/O and your code stay the same. It also support changing the parameters inside one run on event base and all this was and is already working and developed since more than ten years by Hades. Also as I said before the most critical part is the version management.
Anyway, if you can implement an alternative to this it would be very welcome, finally the design is implemented that we can replace the run time data base with another package.
And tell now we have no body to take care of the Oracle data base for Panda at the GSI (Table design, web interface for validation and so on ). But with our Run time DB we can use the root file as an alternative, but if you come with a new implementation it would be great. So it would be nice to see a Dictionary-Proxy-condition-data base implemented for Panda. My only concern was that if one try to replace this very complex system with a naive set and get things, but if you plan such an advanced system then as I said welcome.
regards
Mohammad
|
|
|
Re: PandaRoot meeting, Wednesday 21th of October, 10:00, EVO [message #9631 is a reply to message #9595] |
Tue, 27 October 2009 17:44 |
Bertram Kopf
Messages: 110 Registered: March 2006
|
continuous participant |
From: *ep1.ruhr-uni-bochum.de
|
|
Hi Mohammad,
Mohammad Al-Turany wrote |
...
Anyway, if you can implement an alternative to this it would be very welcome, finally the design is implemented that we can replace the run time data base with another package.
And tell now we have no body to take care of the Oracle data base for Panda at the GSI (Table design, web interface for validation and so on ). But with our Run time DB we can use the root file as an alternative, but if you come with a new implementation it would be great. So it would be nice to see a Dictionary-Proxy-condition-data base implemented for Panda. My only concern was that if one try to replace this very complex system with a naive set and get things, but if you plan such an advanced system then as I said welcome.
|
On my local PandaRoot version, I have migrated a type-safe Proxy-Dictionary which can also be used for an alternative solution to the present Run time DB. In addition it can also be used for a global access to (lists of) transient objects. This proxy dict doesn't interfere with any other code. On my machine, everything compiles and the standalone test macros are working properly.
I have created a new directory "PndBase" with a subdirectory "ProxyDict" where the source code is located. In addition I created a subdirectory "ProxyDict" in the macro package where the test macros are available.
In order to commit these things it would be nice to give me the relevant write permissions. Is this possible? Or should I send you the code and you take care of it?
Thanks in advance and cheers,
Bertram.
p.s.: In addition I intend to migrate to the PndBase directory some useful association tools which support 1:1, 1:many and many:many relations.
|
|
|
|
Re: PandaRoot meeting, Wednesday 21th of October, 10:00, EVO [message #9634 is a reply to message #9632] |
Wed, 28 October 2009 14:41 |
Bertram Kopf
Messages: 110 Registered: March 2006
|
continuous participant |
From: *ep1.ruhr-uni-bochum.de
|
|
Hi Mohammad,
Mohammad Al-Turany wrote |
I created two new directories for you (pndbase and macro/proxydict) where you can add your stuff there.
|
thank you for creating the new directories. The stuff is already committed. To put it into the general compilation procedure, one has to add the line
"add_subdirectory (pndbase)"
between
"add_subdirectory (parbase)" and
"add_subdirectory (pnddata)"
in "trunk/CMakeLists.txt".
Then the test macros should hopefully work.
Cheers,
Bertram.
|
|
|
Goto Forum:
Current Time: Wed Nov 27 23:25:03 CET 2024
Total time taken to generate the page: 0.00844 seconds
|