| ID | Date | Author | Topic  | Subject | 
| 27 | 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 | 
| 28 | 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 | 
| 29 | 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; | 
| 30 | 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 | 
| 32 | 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;
      } | 
| 33 | 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. | 
| 34 | 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. | 
| 36 | 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 | 
| 37 | 16 Jan 2005 | Ryu Sawada | Bug Report | user input | 
| After change of ROMEEventLoop.cpp 1.39, Program steerings don't work on Linux. | 
| 38 | 17 Jan 2005 | Matthias Schneebeli | Bug Report | user input | 
| > After change of ROMEEventLoop.cpp 1.39, Program steerings don't work on Linux.
Sorry. | 
| 47 | 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. | 
| 50 | 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. | 
| 51 | 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. | 
| 52 | 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. | 
| 56 | 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 | 
| 58 | 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 | 
| 59 | 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 | 
| 60 | 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. | 
| 62 | 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. | 
| 64 | 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? |