ID |
Date |
Author |
Topic |
Subject |
11
|
14 Oct 2004 |
Matthias Schneebeli | Suggestion | TBranch compression |
> > Yes your right.
> >
> > I added that.
>
> The compression level should not be "hard-wired" in the builder. Some people might consider not
> using compression in favour of higher speed. So maybe an option in the XML File like
>
> <Tree>
> <TreeName>Test</TreeName>
> <TreeTitle>Test Data</TreeTitle>
> <CompressionLevel>1</CompressionLevel>
> ...
> </Tree>
Ok, that's done. |
10
|
14 Oct 2004 |
Stefan Ritt | Suggestion | TBranch compression |
> Yes your right.
>
> I added that.
The compression level should not be "hard-wired" in the builder. Some people might consider not
using compression in favour of higher speed. So maybe an option in the XML File like
<Tree>
<TreeName>Test</TreeName>
<TreeTitle>Test Data</TreeTitle>
<CompressionLevel>1</CompressionLevel>
...
</Tree> |
9
|
13 Oct 2004 |
Matthias Schneebeli | Bug Report | serial number and event ID |
> In "ROMEEventLoop.cpp"
> in function "ReadEvent(Int_t event)"
> after "if (gROME->isOnline()&&gROME->isMidas()) {"
>
> gROME should get serial_number and event ID from event header.
> There should be following 2 lines
>
> gROME->SetCurrentEventNumber(((EVENT_HEADER*)mEvent)->serial_number);
> gROME->SetEventID(((EVENT_HEADER*)mEvent)->event_id);
done |
8
|
13 Oct 2004 |
Matthias Schneebeli | Suggestion | TBranch compression |
> It seems that branchs in TTree which is created by ROME is not compressed.
>
> So I changed src/framework/XXEventLoop.cpp like
>
> .
> .
> .
> tree = new TTree("Trigger","Trigger");
> tree->Branch("Info","ROMETreeInfo",&fTreeInfo,32000,99);
> tree->GetBranch("Info")->SetCompressionLevel(1);
> tree->Branch("LPADCData","TClonesArray",gAnalyzer->GetLPADCDataObjectsAddress(),32000,99);
> tree->GetBranch("LPADCData")->SetCompressionLevel(1);
> .
> .
> .
>
> After this change, file size which was 739MB became 235MB.
Yes your right.
I added that. |
7
|
13 Oct 2004 |
ryu | Bug Report | serial number and event ID |
In "ROMEEventLoop.cpp"
in function "ReadEvent(Int_t event)"
after "if (gROME->isOnline()&&gROME->isMidas()) {"
gROME should get serial_number and event ID from event header.
There should be following 2 lines
gROME->SetCurrentEventNumber(((EVENT_HEADER*)mEvent)->serial_number);
gROME->SetEventID(((EVENT_HEADER*)mEvent)->event_id); |
6
|
13 Oct 2004 |
ryu | Suggestion | TTree filling in online mode. |
In my case, in online mode, I don't need to wirte TTree.
But I want to fill it, because we use it to see data with using TSocket connection.
How do you think about filling TTree even if write flag is not toggled ? |
5
|
13 Oct 2004 |
ryu | Suggestion | TBranch compression |
It seems that branchs in TTree which is created by ROME is not compressed.
So I changed src/framework/XXEventLoop.cpp like
.
.
.
tree = new TTree("Trigger","Trigger");
tree->Branch("Info","ROMETreeInfo",&fTreeInfo,32000,99);
tree->GetBranch("Info")->SetCompressionLevel(1);
tree->Branch("LPADCData","TClonesArray",gAnalyzer->GetLPADCDataObjectsAddress(),32000,99);
tree->GetBranch("LPADCData")->SetCompressionLevel(1);
.
.
.
After this change, file size which was 739MB became 235MB. |
4
|
11 Oct 2004 |
Matthias Schneebeli | Info | Schema evolution in root and rome |
For your information:
ROOT has an automatic schema evolution implemented. That means, that all trees
can be filled into a class from a file, even if the class definition has
changed (take a look at the input/output section in the root manual).
This works also in the rome environment. All you have to do is to increment the
version number of a folder, every time you change the folder.
This works for adding, removeing or changing fields. However, if you remove or
change a field you will have to change your user code, because the Get and Set
methods will be changed or removed too. So you better think twice about the
contents of a folder.
Matthias |
3
|
08 Oct 2004 |
Matthias Schneebeli | Suggestion | xml and ROME |
> > After looking at the example xml document for the MEG detector I would like to make the following suggestion.
> > Only a small portion of the power of XML is used with the MEG example i.e., the ability to express the data as a
> > hierarchical tree. Missing is the powerful feature of XML to establish a schema for the XML document specific
> > to ROME that enforces a valid structure.
> >
> > XML uses the XML Schema language, which is in turn based on XML, to define a schema for a document. I
> > propose that a ROME schema be developed that defines an XML document that the ROME builder can read
> > and process. By having such a schema, general purpose XML editors can validate the XML document prior to
> > invoking the ROME builder. Thus the schema greatly simplifies a user's task of developing a ROME xml
> > document describing their experiment. In addition, a good XML editor uses the schema to indicate to the user
> > the elements available at any particular point in the document so that the user doesn't have to remember all the
> > entries, which are required or optional to describe an experiment.
> >
> > With this e-mail I include two documents. The first is an example schema for ROME. This schema is
> > incomplete, but illustrates the major concepts of using a schema to specify the acceptable format of the XML
> > document and providing help to the user for building the document. The second is an example XML document
> > built using the ROME sample schema. It is for an experiment currently in production at the Los Alamos
> > National Laboratory.
> >
> > To get this example to work you will have to change the second line of DANCESchema.xml so that it properly
> > points to the ROME.xsd document. For this example I used the Java based XML editor Oxygen.
> >
> > Notes on Schema:
> > 1) Every element in the schema has a fixed name. All experimental data is included as either xml data or an
> > xml attribute.
> > 2) Based on the suggestion by <a
> href="<a
href="http://www.xmlfiles.com/xml/xml_attributes.asp">http://www.xmlfiles.com/xml/xml_attributes.asp</a>">http://www.xml
files.com/xml/xml_attributes.asp"><a
href="http://www.xmlfiles.com/xml/xml_attributes.asp</a>">http://www.xmlfiles.com/xml/xml_attributes.asp</a></a></a>
attributes
> are used sparingly or
> > not at all. Instead data is specified as XML data e.g. <data>the actual data</data>.
> >
> > If you have any questions concerning this example please e-mail jwouters@lanl.gov.
>
>
> Thank you for your advice.
>
> I have implemented the suggested xml format in rome. I have also inluded a rome.xsd schema file in the rome
> distribution under ROMESYS/.
>
> Now, the current cvs version of rome expects the new format.
> The samples are updated.
>
> The documentation is not yet updated.
> Is there any way of using the .xsd file for documentation?
>
> For example I'd like to have somting like this:
> I would like to have a docu attribute in the xsd file :
>
> <xs:element name="Folders" minOccurs="1" maxOccurs="1" docu="Defines all folder of the framework">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="Folder" type="FolderDesc" minOccurs="1" maxOccurs="unbounded"
> docu="Defines a folder of the framework"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
>
> The xsd file should then be translated into an html file, that documents the structure of my xml file with comments
> on every field.
>
> Is there any tool, that provides a documentation mechanism like that.
>
> If not I will write that by myself.
For get my question, I have found some schema documentation generators. |
2
|
08 Oct 2004 |
Matthias Schneebeli | Suggestion | xml and ROME |
> After looking at the example xml document for the MEG detector I would like to make the following suggestion.
> Only a small portion of the power of XML is used with the MEG example i.e., the ability to express the data as a
> hierarchical tree. Missing is the powerful feature of XML to establish a schema for the XML document specific
> to ROME that enforces a valid structure.
>
> XML uses the XML Schema language, which is in turn based on XML, to define a schema for a document. I
> propose that a ROME schema be developed that defines an XML document that the ROME builder can read
> and process. By having such a schema, general purpose XML editors can validate the XML document prior to
> invoking the ROME builder. Thus the schema greatly simplifies a user's task of developing a ROME xml
> document describing their experiment. In addition, a good XML editor uses the schema to indicate to the user
> the elements available at any particular point in the document so that the user doesn't have to remember all the
> entries, which are required or optional to describe an experiment.
>
> With this e-mail I include two documents. The first is an example schema for ROME. This schema is
> incomplete, but illustrates the major concepts of using a schema to specify the acceptable format of the XML
> document and providing help to the user for building the document. The second is an example XML document
> built using the ROME sample schema. It is for an experiment currently in production at the Los Alamos
> National Laboratory.
>
> To get this example to work you will have to change the second line of DANCESchema.xml so that it properly
> points to the ROME.xsd document. For this example I used the Java based XML editor Oxygen.
>
> Notes on Schema:
> 1) Every element in the schema has a fixed name. All experimental data is included as either xml data or an
> xml attribute.
> 2) Based on the suggestion by <a
href="http://www.xmlfiles.com/xml/xml_attributes.asp">http://www.xmlfiles.com/xml/xml_attributes.asp</a> attributes
are used sparingly or
> not at all. Instead data is specified as XML data e.g. <data>the actual data</data>.
>
> If you have any questions concerning this example please e-mail jwouters@lanl.gov.
Thank you for your advice.
I have implemented the suggested xml format in rome. I have also inluded a rome.xsd schema file in the rome
distribution under ROMESYS/.
Now, the current cvs version of rome expects the new format.
The samples are updated.
The documentation is not yet updated.
Is there any way of using the .xsd file for documentation?
For example I'd like to have somting like this:
I would like to have a docu attribute in the xsd file :
<xs:element name="Folders" minOccurs="1" maxOccurs="1" docu="Defines all folder of the framework">
<xs:complexType>
<xs:sequence>
<xs:element name="Folder" type="FolderDesc" minOccurs="1" maxOccurs="unbounded"
docu="Defines a folder of the framework"/>
</xs:sequence>
</xs:complexType>
</xs:element>
The xsd file should then be translated into an html file, that documents the structure of my xml file with comments
on every field.
Is there any tool, that provides a documentation mechanism like that.
If not I will write that by myself. |
1
|
05 Oct 2004 |
Jan Wouters | Suggestion | xml and ROME |
After looking at the example xml document for the MEG detector I would like to make the following suggestion.
Only a small portion of the power of XML is used with the MEG example i.e., the ability to express the data as a
hierarchical tree. Missing is the powerful feature of XML to establish a schema for the XML document specific
to ROME that enforces a valid structure.
XML uses the XML Schema language, which is in turn based on XML, to define a schema for a document. I
propose that a ROME schema be developed that defines an XML document that the ROME builder can read
and process. By having such a schema, general purpose XML editors can validate the XML document prior to
invoking the ROME builder. Thus the schema greatly simplifies a user's task of developing a ROME xml
document describing their experiment. In addition, a good XML editor uses the schema to indicate to the user
the elements available at any particular point in the document so that the user doesn't have to remember all the
entries, which are required or optional to describe an experiment.
With this e-mail I include two documents. The first is an example schema for ROME. This schema is
incomplete, but illustrates the major concepts of using a schema to specify the acceptable format of the XML
document and providing help to the user for building the document. The second is an example XML document
built using the ROME sample schema. It is for an experiment currently in production at the Los Alamos
National Laboratory.
To get this example to work you will have to change the second line of DANCESchema.xml so that it properly
points to the ROME.xsd document. For this example I used the Java based XML editor Oxygen.
Notes on Schema:
1) Every element in the schema has a fixed name. All experimental data is included as either xml data or an
xml attribute.
2) Based on the suggestion by http://www.xmlfiles.com/xml/xml_attributes.asp attributes are used sparingly or
not at all. Instead data is specified as XML data e.g. <data>the actual data</data>.
If you have any questions concerning this example please e-mail jwouters@lanl.gov. |
Attachment 1: DANCESchema.xml
|
<?xml version="1.0" encoding="UTF-8"?>
<Experiment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file:/Users/jwouters/Dev/DANCE/ROME/DANCE.xsd">
<ExperimentName>DANCE</ExperimentName>
<Author>
<AuthorName>Jan M. Wouters</AuthorName>
<AuthorInstitute>LANL</AuthorInstitute>
<AuthorCollaboration>DANCE</AuthorCollaboration>
<AuthorEmail>jwouters@lanl.gov</AuthorEmail>
</Author>
<Folder>
<SubFolder>
<SubFolderName>OEDDanceEvent</SubFolderName>
<SubFolderTitle>Dance Event</SubFolderTitle>
<ArraySize>2</ArraySize>
<Field>
<FieldName>OEDgGammaEnergy</FieldName>
<FieldType>Float_t</FieldType>
<FieldComment>Total Gamma Energy</FieldComment>
</Field>
<Field>
<FieldName>OEDgNeutronEnergy</FieldName>
<FieldType>Float_t</FieldType>
</Field>
</SubFolder>
<SubFolder>
<SubFolderName>OCDOneDanceCrystal</SubFolderName>
<SubFolderTitle>Crystal</SubFolderTitle>
<ArraySize>1</ArraySize>
<Field>
<FieldName>OCDgHiGainRaw</FieldName>
<FieldType>ULong_t</FieldType>
<FieldComment>Hi gain raw value"</FieldComment>
</Field>
<Field>
<FieldName>OCDgLoGainRaw</FieldName>
<FieldType>ULong_t</FieldType>
<FieldComment>Lo gain raw value</FieldComment>
</Field>
<Field>
<FieldName>OCDgHiGainCalib</FieldName>
<FieldType>Float_t</FieldType>
<FieldComment>Hi gain calib value</FieldComment>
</Field>
</SubFolder>
</Folder>
<Task>
<SubTask>
<TaskName>ReadData</TaskName>
<TaskEventId>1</TaskEventId>
<Author>
<AuthorName>Jan M. Wouters</AuthorName>
</Author>
<TaskVersion>1</TaskVersion>
<TaskDesc>reads data</TaskDesc>
</SubTask>
<SubTask>
<TaskName>CalibData</TaskName>
<TaskEventId>1</TaskEventId>
<Author>
<AuthorName>Jan M. Wouters</AuthorName>
</Author>
<TaskVersion>1</TaskVersion>
<Histograms>
<Histogram>
<HistFolder>RawData</HistFolder>
<HistTitle>Raw Histograms</HistTitle>
<HistType>TH1S</HistType>
<HistArraySize>160</HistArraySize>
<HistSize>1024</HistSize>
<xMax>1024</xMax>
</Histogram>
<Histogram>
<HistFolder>CalibData</HistFolder>
<HistTitle>Calib Histograms</HistTitle>
<HistType>TH1F</HistType>
<HistArraySize>160</HistArraySize>
<HistSize>2048</HistSize>
<xMax>2047</xMax>
</Histogram>
</Histograms>
<TaskDesc>Calibrates the raw data</TaskDesc>
</SubTask>
</Task>
<MidasBanks>
<EventHeader>
<Folder>Trigger</Folder>
<EventId>ID</EventId>
<TriggerMask>Mask</TriggerMask>
<SerialNumber>EventNumber</SerialNumber>
<TimeStamp>Time</TimeStamp>
</EventHeader>
<EventStructure>
<EventName>TM01</EventName>
<EventData>
<DataName>Time</DataName>
<DataType>DWORD</DataType>
</EventData>
</EventStructure>
<EventStructure>
<EventName>EV01</EventName>
<EventData>
<DataName>OCRgAreaHG</DataName>
<DataType>DWORD</DataType>
</EventData>
<EventData>
<DataName>OCRgAreaLG</DataName>
<DataType>DWORD</DataType>
</EventData>
<EventData>
<DataName>OCRgTimeHi</DataName>
<DataType>DWORD</DataType>
</EventData>
<EventData>
<DataName>OCRgDetId</DataName>
<DataType>DWORD</DataType>
</EventData>
</EventStructure>
</MidasBanks>
</Experiment>
|
Attachment 2: ROME.xsd
|
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:documentation>Described some enumerated types</xs:documentation>
</xs:annotation>
<xs:simpleType name="RootType">
<xs:restriction base="xs:string">
<xs:enumeration value="Float_t"/>
<xs:enumeration value="ULong_t"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="HistTypeDesc">
<xs:restriction base="xs:string">
<xs:enumeration value="TH1C"/>
<xs:enumeration value="TH1S"/>
<xs:enumeration value="TH1F"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="MidasType">
<xs:restriction base="xs:string">
<xs:enumeration value="DWORD"/>
<xs:enumeration value="float"/>
</xs:restriction>
</xs:simpleType>
<xs:annotation>
<xs:documentation>Describe general types</xs:documentation>
</xs:annotation>
<xs:complexType name="AuthorDesc">
<xs:sequence>
<xs:element name="AuthorName" type="xs:string"/>
<xs:element name="AuthorInstitute" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="AuthorCollaboration" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="AuthorEmail" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:annotation>
<xs:documentation>Describe types used by subfolders</xs:documentation>
</xs:annotation>
<xs:complexType name="FieldDesc">
<xs:sequence>
<xs:element name="FieldName" type="xs:string"/>
<xs:element name="FieldType" type="RootType"/>
<xs:element name="FieldComment" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="SubFolderDesc">
<xs:sequence>
<xs:element name="SubFolderName" type="xs:string"/>
<xs:element name="SubFolderTitle" type="xs:string"/>
<xs:element name="ArraySize" type="xs:integer"/>
<xs:element name="Field" type="FieldDesc" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:annotation>
<xs:documentation>Describe tasks</xs:documentation>
</xs:annotation>
<xs:complexType name="HistDesc">
<xs:sequence>
<xs:element name="HistFolder" type="xs:string"/>
<xs:element name="HistTitle" type="xs:string"/>
<xs:element name="HistType" type="HistTypeDesc"/>
<xs:element name="HistArraySize" type="xs:integer" minOccurs="0" default="1"/>
<xs:element name="HistSize" type="xs:integer"/>
<xs:element name="xMin" type="xs:integer" minOccurs="0" default="0"/>
<xs:element name="xMax" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="HistogramsDesc">
<xs:sequence>
<xs:element name="Histogram" type="HistDesc" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="SubTaskDesc">
<xs:sequence>
<xs:element name="TaskName" type="xs:string"/>
<xs:element name="TaskEventId" type="xs:integer"/>
<xs:element name="Author" type="AuthorDesc"/>
<xs:element name="TaskVersion" type="xs:integer"/>
<xs:element name="Histograms" type="HistogramsDesc" minOccurs="0" maxOccurs="1"/>
<xs:element name="TaskDesc" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:annotation>
<xs:documentation>Describe elements used by MidasBanks</xs:documentation>
</xs:annotation>
<xs:complexType name="EventHeaderDesc">
<xs:sequence>
<xs:element name="Folder" type="xs:string"/>
<xs:element name="EventId" type="xs:string"/>
<xs:element name="TriggerMask" type="xs:string"/>
<xs:element name="SerialNumber" type="xs:string"/>
<xs:element name="TimeStamp" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="EventDataDesc">
<xs:sequence>
<xs:element name="DataName" type="xs:string"/>
<xs:element name="DataType" type="MidasType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="EventStructDesc">
<xs:sequence>
<xs:element name="EventName" type="xs:string"/>
<xs:element name="EventData" type="EventDataDesc" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:annotation>
<xs:documentation>Describe overall document</xs:documentation>
</xs:annotation>
<xs:element name="Experiment">
<xs:complexType>
<xs:sequence>
<xs:element name="ExperimentName" type="xs:string"/>
<xs:element name="Author" type="AuthorDesc"/>
<xs:element name="Folder">
<xs:complexType>
<xs:sequence>
<xs:element name="SubFolder" type="SubFolderDesc" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Task">
<xs:complexType>
<xs:sequence>
<xs:element name="SubTask" type="SubTaskDesc" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MidasBanks">
<xs:complexType>
<xs:sequence>
<xs:element name="EventHeader" type="EventHeaderDesc"/>
<xs:element name="EventStructure" type="EventStructDesc" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
|