Back Midas Rome Roody Rootana
  Rome Analyzer Framework, Page 9 of 11  Not logged in ELOG logo
    Reply  21 Dec 2004, Matthias Schneebeli, Bug Report, ReadConfiguration 
> I can not change some global steering parameters.
> In my LPConfig::ReadConfiguration in LPConfig.cpp which was generated by builder.
> 
> There is a line like
>  xml->GetPathValue(path+"/GlobalSteeringParameters/child::SteeringParameterGroup[child::
> SPGroupName='Switch']/child::SteeringParameterGroup[child::SPGroupName='RunMode']/child::
> SteeringParameterField[child::SPName='Pedestal']/SPValue",fConfigData[index]->fGlobalSteering-
> >fRunMode->fPedestal,"");
> 
> but it should be
>  xml->GetPathValue(path+"/GlobalSteeringParameters/child::SteeringParameterGroup[child::
> SPGroupName='RunMode']/child::SteeringParameterField[child::SPName='Pedestal']/
> SPValue",fConfigData[index]->fGlobalSteering->fRunMode->fPedestal,"");
> 
> 
> ****
> one small other bug.
> when I start my framework with -h option, rome shows
>   -i       Configuration file (default ROMEConfig.xml)
> but default is romeConfig.xml
> ***
> 
>         <GlobalSteeringParameters>
>                 <SteeringParameterGroup>
>                         <SPGroupName>Switch</SPGroupName>
>                              <SteeringParameterField>
>                                 <SPFieldName>ADC1</SPFieldName>
>                                 <SPFieldType>Bool_t</SPFieldType>
>                                 <SPFieldInitialization>1</SPFieldInitialization>                                
>                         </SteeringParameterField>
>                         <SteeringParameterField>
>                                 <SPFieldName>WriteDataBase</SPFieldName>
>                                 <SPFieldType>Bool_t</SPFieldType>
>                                 <SPFieldInitialization>0</SPFieldInitialization>                                
>                         </SteeringParameterField>
>                 </SteeringParameterGroup>
>                 <SteeringParameterGroup>
>                         <SPGroupName>RunMode</SPGroupName>
>                         <SteeringParameterField>
>                                 <SPFieldName>Pedestal</SPFieldName>
>                                 <SPFieldType>Short_t</SPFieldType>
>                                 <SPFieldInitialization>0</SPFieldInitialization>                                
>                         </SteeringParameterField>
>                         <SteeringParameterField>
>                                 <SPFieldName>Normal</SPFieldName>
>                                 <SPFieldType>Short_t</SPFieldType>
>                                 <SPFieldInitialization>1</SPFieldInitialization>                                
>                         </SteeringParameterField>
>                 </SteeringParameterGroup>
>         </GlobalSteeringParameters>

done
    Reply  21 Dec 2004, Matthias Schneebeli, Bug Report, -e option 
> When I used "-e" option in generated framework. It stopped immediately after starting analysis.
> 
> When I commented out following two lines in ROMEEventLoop.cpp. It worked.
> 
>   // check event numbers
>       int status = gROME->CheckEventNumber(event);
>       if (status==0) {
> //	this->SetContinue();
> //	return true;
>       }

the syntax is : -e 100-200,205,300-400
Entry  01 Jan 2005, Ryu Sawada, Bug Report, Multiple TTree writing 
When I make two TTree's write flag true. Both TTrees is written in one file. And the other file is empty.

I added some lines to fix it in ROMEEventLoop.cpp

-------
This is other topic.
Probably, to close TFile after each run is good. 
Because, when program runs for several run, 
 even if program aborts after some runs, files of former runs are safe.



-------
  941    // Write non accumulative output tree files
    942    ROMEString filename;
    943    ROMETree *romeTree;
    944    TTree *tree;
    945    TFile *fTreeFile;
    946    ROMEString runNumberString;
    947    gROME->GetCurrentRunNumberString(runNumberString);
    948    for (int j=0;j<gROME->GetTreeObjectEntries();j++) {
    949       romeTree = gROME->GetTreeObjectAt(j);
    950       fTreeFile = fTreeFiles[j];
    951       if (romeTree->isWrite() && !gROME->isTreeAccumulation()) {
    952          tree = romeTree->GetTree();
    953          cout << "Writing Root-File " << tree->GetName() << runNumberString.Data() << ".root" 
<< endl;
    954          fTreeFile->cd();
    955          tree->Write("",TObject::kOverwrite);
    956       }
    957    }
    958    cout << endl;
    Reply  04 Jan 2005, Matthias Schneebeli, Bug Report, Multiple TTree writing 
> When I make two TTree's write flag true. Both TTrees is written in one file. And the other file is empty.
> 
> I added some lines to fix it in ROMEEventLoop.cpp
> 
> -------
> This is other topic.
> Probably, to close TFile after each run is good. 
> Because, when program runs for several run, 
>  even if program aborts after some runs, files of former runs are safe.
> 
> 
> 
> -------
>   941    // Write non accumulative output tree files
>     942    ROMEString filename;
>     943    ROMETree *romeTree;
>     944    TTree *tree;
>     945    TFile *fTreeFile;
>     946    ROMEString runNumberString;
>     947    gROME->GetCurrentRunNumberString(runNumberString);
>     948    for (int j=0;j<gROME->GetTreeObjectEntries();j++) {
>     949       romeTree = gROME->GetTreeObjectAt(j);
>     950       fTreeFile = fTreeFiles[j];
>     951       if (romeTree->isWrite() && !gROME->isTreeAccumulation()) {
>     952          tree = romeTree->GetTree();
>     953          cout << "Writing Root-File " << tree->GetName() << runNumberString.Data() << ".root" 
> << endl;
>     954          fTreeFile->cd();
>     955          tree->Write("",TObject::kOverwrite);
>     956       }
>     957    }
>     958    cout << endl;



Thanks
Entry  09 Jan 2005, Ryu Sawada, Bug Report, long task description 
When I made task description longer than about 80 characters. The description was not written in html 
file propery. It was shorten.

I guess following lines in ROMEBuilder.cpp are relating to this.


-----------
      pos = (char*)taskDescription[iTask].Data();
      lenTot = taskDescription[iTask].Length();
      while (pos-taskDescription[iTask].Data() < lenTot) {
         if (lenTot+(taskDescription[iTask].Data()-pos)<74) 
            i=TMath::Min(75,lenTot);
         else for (i=74;pos[i]!=32&&i>0;i--) {}
         if (i<=0)
            i=TMath::Min(75,lenTot);
         pos[i] = 0;
         buffer.AppendFormatted("// %-74.74s   \n",pos);
         pos = pos+i+1;
      }
    Reply  10 Jan 2005, Matthias Schneebeli, Bug Report, long task description 
> When I made task description longer than about 80 characters. The description was not written in html 
> file propery. It was shorten.
> 
> I guess following lines in ROMEBuilder.cpp are relating to this.
> 
> 
> -----------
>       pos = (char*)taskDescription[iTask].Data();
>       lenTot = taskDescription[iTask].Length();
>       while (pos-taskDescription[iTask].Data() < lenTot) {
>          if (lenTot+(taskDescription[iTask].Data()-pos)<74) 
>             i=TMath::Min(75,lenTot);
>          else for (i=74;pos[i]!=32&&i>0;i--) {}
>          if (i<=0)
>             i=TMath::Min(75,lenTot);
>          pos[i] = 0;
>          buffer.AppendFormatted("// %-74.74s   \n",pos);
>          pos = pos+i+1;
>       }

done. thanks.
    Reply  10 Jan 2005, Matthias Schneebeli, Bug Report, long task description 
> When I made task description longer than about 80 characters. The description was not written in html 
> file propery. It was shorten.
> 
> I guess following lines in ROMEBuilder.cpp are relating to this.
> 
> 
> -----------
>       pos = (char*)taskDescription[iTask].Data();
>       lenTot = taskDescription[iTask].Length();
>       while (pos-taskDescription[iTask].Data() < lenTot) {
>          if (lenTot+(taskDescription[iTask].Data()-pos)<74) 
>             i=TMath::Min(75,lenTot);
>          else for (i=74;pos[i]!=32&&i>0;i--) {}
>          if (i<=0)
>             i=TMath::Min(75,lenTot);
>          pos[i] = 0;
>          buffer.AppendFormatted("// %-74.74s   \n",pos);
>          pos = pos+i+1;
>       }

done. thanks.
Entry  12 Jan 2005, Ryu Sawada, Bug Report, invalid header 
When I built my application with romebuilder.
It complained like,
Error : File './/src/tasks/LPTXEGainCalib.cpp' has an invalid header !!!
Error : File './/src/tasks/LPTXETimeCalib.cpp' has an invalid header !!!
Error : File './/src/tasks/LPTUTTask.cpp' has an invalid header !!!

Headers looks like,
//// Author: Ryu Sawada
/////////////^@//////////////////////////////////////////////////////////////////
//                                                                            //

Thre first time to build Just after I removed ^@, builder stopped warning. 
But after that  ^@ appeared again and builder starts warning.

I have several task files, but builder adds ^@ always these three files.

My source files are here.
cvs -d :ext:pc4466.psi.ch:/usr/local/cvsroot co lpframework
Entry  16 Jan 2005, Ryu Sawada, Bug Report, user input 
After change of ROMEEventLoop.cpp 1.39, Program steerings don't work on Linux.
    Reply  17 Jan 2005, Matthias Schneebeli, Bug Report, user input 
> After change of ROMEEventLoop.cpp 1.39, Program steerings don't work on Linux.

Sorry.
Entry  05 Feb 2005, Ryu Sawada, Bug Report, small problem of XML definition file 
About <EventHeader> in xml definition file.

In description page in ROME homepage, It is wirtten that <EventId> specifies the field.
But It seems that 'd' shoud be capital.
Entry  09 Mar 2005, Ryu Sawada, Bug Report, Unanalyzed events 
In online mode, ROME often stops before finishing to analyze all events of runs. 
 When it happens, gAnalyzer->GetCurrentEventNumber() starts not from 1 but from analyzed event 
number at previous run. And unanalyzed events at the previous run are mixed with the new run.

In mana.c of MIDAS, I found a part to wait until all events in buffers are analyzed when analyzer gets 
TR_STOP signal, while ROME does not have.

I personaly don't need that all events are analyzed, but it is really problem that data of two runs are 
mixed.

One way is to take similar way as midas analyzer, and the another way is just discard unanalyzed 
events.
Entry  09 Mar 2005, Ryu Sawada, Bug Report, default values in romeConfig.xml 
Recently, default values of steering parameters in romeConfig.xml are always 0. They are not as same 
as values in SPFieldInitialization of definition XML file.
Entry  10 Mar 2005, Ryu Sawada, Bug Report, ResetFolders 
In ROMEEventLoop.cpp::ReadEvent
this->ResetFolders is called before fActiveDAQ->ReadEvent, so data in event headers are not updated 
properly.
    Reply  21 Mar 2005, Matthias Schneebeli, Bug Report, small problem of XML definition file 
> About <EventHeader> in xml definition file.
> 
> In description page in ROME homepage, It is wirtten that <EventId> specifies the field.
> But It seems that 'd' shoud be capital.

done
    Reply  21 Mar 2005, Matthias Schneebeli, Bug Report, ResetFolders 
> In ROMEEventLoop.cpp::ReadEvent
> this->ResetFolders is called before fActiveDAQ->ReadEvent, so data in event headers are not updated 
> properly.

done
    Reply  21 Mar 2005, Matthias Schneebeli, Bug Report, Unanalyzed events 
> In online mode, ROME often stops before finishing to analyze all events of runs. 
>  When it happens, gAnalyzer->GetCurrentEventNumber() starts not from 1 but from analyzed event 
> number at previous run. And unanalyzed events at the previous run are mixed with the new run.
> 
> In mana.c of MIDAS, I found a part to wait until all events in buffers are analyzed when analyzer gets 
> TR_STOP signal, while ROME does not have.
> 
> I personaly don't need that all events are analyzed, but it is really problem that data of two runs are 
> mixed.
> 
> One way is to take similar way as midas analyzer, and the another way is just discard unanalyzed 
> events.

done
    Reply  21 Mar 2005, Ryu Sawada, Bug Report, ResetFolders 
> > In ROMEEventLoop.cpp::ReadEvent
> > this->ResetFolders is called before fActiveDAQ->ReadEvent, so data in event headers are not updated 
> > properly.
> 
> done
I wonder if this is the reason why Jan couldn't read scaler events.
Event ID was shifted by two events, so when scaler event comes, ROME can always recognize it as trigger events.
    Reply  23 Mar 2005, Matthias Schneebeli, Bug Report, ResetFolders 
> > > In ROMEEventLoop.cpp::ReadEvent
> > > this->ResetFolders is called before fActiveDAQ->ReadEvent, so data in event headers are not updated 
> > > properly.
> > 
> > done
> I wonder if this is the reason why Jan couldn't read scaler events.
> Event ID was shifted by two events, so when scaler event comes, ROME can always recognize it as trigger events.

No the reason for Jan's problem was that rome never requested scaler events from the frontend. This is fixed now.
Entry  26 Mar 2005, Ryu Sawada, Bug Report, problem after changing xml library 
After changing xml library from libxml2 to mxml, examples (sample and MEG) can not be compiled.

My project does not work too. What is necessary to make it work?
ELOG V3.1.4-2e1708b5