Commit 3e8a4a84 authored by Javier Galan's avatar Javier Galan
Browse files

Merge branch 'development'

parents b528be4f 4d90c027
......@@ -35,6 +35,9 @@ before_script:
# We redefine the HOME
- export HOME=${CI_PROJECT_DIR}/install/
- if [ -d $HOME/.rest ]; then rm -Rf $HOME/.rest; fi
- git submodule sync --recursive
- git submodule update --init --recursive
clang-format:
stage: pre-build
......@@ -141,6 +144,18 @@ GenerateReadout:
variables:
- $CRONJOB == "YES"
BasicReadout:
type: metadata
script:
- . ${CI_PROJECT_DIR}/install/thisREST.sh
- cd ${CI_PROJECT_DIR}/projects/basic-readouts/
- ls
- restRoot --m 1 -b -q GenerateReadouts.C'("basic.root")'
- restRoot -b -q BasicValidation.C'("basic.root", "pixelDecoding")'
except:
variables:
- $CRONJOB == "YES"
testMeta:
type: restManager_generate
script:
......@@ -160,7 +175,7 @@ trexDM_data:
script:
- . ${CI_PROJECT_DIR}/install/thisREST.sh
- cd ${CI_PROJECT_DIR}/scripts/pipeline/trex
- restManager --c 01_raw.rml --f data.aqs
- restManager --c 01_raw.rml --f *.aqs
- restManager --c 02_signal.rml --f RawData.root
- restManager --c 03_hits.rml --f Signals.root
- restRoot -b -q ../MakeBasicTree.C'("Hits.root")'
......
......@@ -4,3 +4,9 @@
[submodule "libraries/axion"]
path = libraries/axion
url = git@lfna.unizar.es:iaxo/RestAxionLib.git
[submodule "projects/basic-readouts"]
path = projects/basic-readouts
url = git@lfna.unizar.es:gifna/basic-readouts.git
[submodule "projects/basic-geometries"]
path = projects/basic-geometries
url = git@lfna.unizar.es:gifna/basic-geometries.git
......@@ -174,9 +174,6 @@ message("Check main project README.md to see all available compilation options")
message("")
file(GLOB_RECURSE Headers "${CMAKE_CURRENT_SOURCE_DIR}/source/*.h")
file(GLOB_RECURSE Headers_ "${CMAKE_CURRENT_SOURCE_DIR}/source/tools/external/win/*.h")
list(REMOVE_ITEM Headers ${Headers_})
INSTALL(FILES ${Headers} DESTINATION include)
......
......@@ -23,12 +23,29 @@ More info can be found in the [documentation](doc/Chapters/2-installing-rest.md)
The recommended way to download a copy of REST will be to clone it using the corresponding git command.
This command will download the master branch to the `restFramework` directory including all submodules (libraries, packages, etc).
```
cd
git clone git@lfna.unizar.es:rest-development/REST_v2.git
git clone --single-branch --branch master git@lfna.unizar.es:rest-development/REST_v2.git -recurse-submodules restFramework
```
If the project was cloned previously and some modules are missing, then it might be necessary to initialize the missing submodules:
```
git submodule update --init --recursive
```
If a submodule was re-synchronized to point to another commit sub-module, it will be necessary to update those modules using:
```
git pull --recurse-submodules
```
Please, notice that if you are working in a sub-module development you need to add the directory as a commit to the new project, if you wish others will be able to update the submodule within the main project. Otherwise, the people pulling the main repository with sub-modules will not get the latest updates.
If you are asked for a password, this is because you did not add your local computer account public ssh key to your Gitlab account.
Check the following [instructions](https://git-scm.com/book/en/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key) to generate your key.
Then, paste the key into your GitLab account (top-right icon of Gitlab site), go to "settings", and access the "ssh keys" in the left menu.
......
<readoutModule name="module" size="((nChannels+1)*pitch-1*pitch/2,(nChannels+1)*pitch-pitch/2-pitch/4)" tolerance="1.e-4" >
// Y-strips
<for variable="nCh" from="1" to="nChannels-2" step="1" >
<readoutChannel id="nCh" >
<for variable="nPix" from="0" to="nChannels-1" step="1" >
<addPixel id="nPix" origin="((1+nCh)*pitch,pitch/4+nPix*pitch)" size="(pixelSize,pixelSize)" rotation="45" />
</for>
<addPixel id="nChannels" origin="((1+nCh)*pitch-pitch/2,pitch/4+(nChannels-1)*pitch+pitch/2)" size="(pitch,pitch/2)" rotation="0" />
</readoutChannel>
</for>
//First strip is special (upper left corner)
<readoutChannel id="0">
<for variable="nPix" from="0" to="nChannels-1" step="1" >
<addPixel id="nPix" origin="((1)*pitch,pitch/4+nPix*pitch)" size="(pixelSize,pixelSize)" rotation="45" />
</for>
<addPixel id="nChannels" origin="((1)*pitch-pitch/2,pitch/4+(nChannels-1)*pitch+pitch/2)" size="(pitch,pitch/2)" rotation="0" />
<addPixel id="nChannels+1" origin="(pitch/2,pitch/4+(nChannels-1)*pitch+pitch)" size="(pitch/2,pitch/2)" rotation="180" triangle="true"/>
</readoutChannel>
// Last strip is special
<readoutChannel id="nChannels-1" >
<for variable="nPix" from="0" to="nChannels-1" step="1" >
<addPixel id="nPix" origin="(nChannels*pitch,pitch/4+nPix*pitch)" size="(pixelSize,pixelSize)" rotation="45" />
<addPixel id="nChannels+nPix" origin="(nChannels*pitch,pitch/4+nPix*pitch)" size="(pitch/2,pitch)" rotation="0" />
</for>
<addPixel id="2*nChannels" origin="(nChannels*pitch-pitch/2,pitch/4+(nChannels-1)*pitch+pitch/2)" size="(pitch,pitch/2)" rotation="0" />
</readoutChannel>
// X-strips
// First strip is special
<readoutChannel id="nChannels" >
<addPixel id="0" origin="(0,0)" size="(pitch/2,3*pitch/4)" rotation="0" />
<for variable="nPix" from="0" to="nChannels-1" step="1" >
<addPixel id="nPix+1" origin="((0.5+nPix)*pitch,pitch-pitch/4)" size="(pixelSize,pixelSize)" rotation="-135" triangle="true"/>
</for>
<addPixel id="nChannels+1" origin="(0,0)" size="(nChannels*pitch+pitch/2,pitch/4)" rotation="0" />
</readoutChannel>
<for variable="nCh" from="1" to="nChannels-2" step="1" >
<readoutChannel id="nChannels+nCh" >
<addPixel id="0" origin="(0,nCh*pitch-pitch/4)" size="(pitch/2,pitch)" rotation="0" />
<for variable="nPix" from="0" to="nChannels-1" step="1" >
<addPixel id="nPix+1" origin="((0.5+nPix)*pitch,nCh*pitch-pitch/4)" size="(pixelSize,pixelSize)" rotation="45" />
</for>
</readoutChannel>
</for>
//Last strip is special (upper left corner)
<readoutChannel id="nChannels+nChannels-1" >
<addPixel id="0" origin="(0,pitch/4+(nChannels-1)*pitch+pitch/2)" size="(pitch/2,pitch/2)" rotation="0" triangle="true"/>
<addPixel id="1" origin="(0,(nChannels-1)*pitch-pitch/4)" size="(pitch/2,pitch)" rotation="0" />
<for variable="nPix" from="0" to="nChannels-1" step="1" >
<addPixel id="nPix+2" origin="((0.5+nPix)*pitch,(nChannels-1)*pitch-pitch/4)" size="(pixelSize,pixelSize)" rotation="45" />
</for>
</readoutChannel>
// Y-strips
<for variable="nCh" from="1" to="nChannels-2" step="1" >
<readoutChannel id="${nCh}" >
<for variable="nPix" from="0" to="nChannels-1" step="1" >
<addPixel id="${nPix}" origin="((1+${nCh})*pitch,pitch/4+${nPix}*pitch)" size="(pixelSize,pixelSize)" rotation="45" />
</for>
<addPixel id="nChannels" origin="((1+${nCh})*pitch-pitch/2,pitch/4+(nChannels-1)*pitch+pitch/2)" size="(pitch,pitch/2)" rotation="0" />
</readoutChannel>
</for>
//First strip is special (upper left corner)
<readoutChannel id="0">
<for variable="nPix" from="0" to="nChannels-1" step="1" >
<addPixel id="${nPix}" origin="((1)*pitch,pitch/4+${nPix}*pitch)" size="(pixelSize,pixelSize)" rotation="45" />
</for>
<addPixel id="nChannels" origin="((1)*pitch-pitch/2,pitch/4+(nChannels-1)*pitch+pitch/2)" size="(pitch,pitch/2)" rotation="0" />
<addPixel id="nChannels+1" origin="(pitch/2,pitch/4+(nChannels-1)*pitch+pitch)" size="(pitch/2,pitch/2)" rotation="180" triangle="true"/>
</readoutChannel>
// Last strip is special
<readoutChannel id="nChannels-1" >
<for variable="nPix" from="0" to="nChannels-1" step="1" >
<addPixel id="${nPix}" origin="(nChannels*pitch,pitch/4+${nPix}*pitch)" size="(pixelSize,pixelSize)" rotation="45" />
<addPixel id="nChannels+${nPix}" origin="(nChannels*pitch,pitch/4+${nPix}*pitch)" size="(pitch/2,pitch)" rotation="0" />
</for>
<addPixel id="2*nChannels" origin="(nChannels*pitch-pitch/2,pitch/4+(nChannels-1)*pitch+pitch/2)" size="(pitch,pitch/2)" rotation="0" />
</readoutChannel>
// X-strips
// First strip is special
<readoutChannel id="nChannels" >
<addPixel id="0" origin="(0,0)" size="(pitch/2,3*pitch/4)" rotation="0" />
<for variable="nPix" from="0" to="nChannels-1" step="1" >
<addPixel id="${nPix}+1" origin="((0.5+${nPix})*pitch,pitch-pitch/4)" size="(pixelSize,pixelSize)" rotation="-135" triangle="true"/>
</for>
<addPixel id="nChannels+1" origin="(0,0)" size="(nChannels*pitch+pitch/2,pitch/4)" rotation="0" />
</readoutChannel>
<for variable="nCh" from="1" to="nChannels-2" step="1" >
<readoutChannel id="nChannels+${nCh}" >
<addPixel id="0" origin="(0,${nCh}*pitch-pitch/4)" size="(pitch/2,pitch)" rotation="0" />
<for variable="nPix" from="0" to="nChannels-1" step="1" >
<addPixel id="${nPix}+1" origin="((0.5+${nPix})*pitch,${nCh}*pitch-pitch/4)" size="(pixelSize,pixelSize)" rotation="45" />
</for>
</readoutChannel>
</for>
//Last strip is special (upper left corner)
<readoutChannel id="nChannels+nChannels-1" >
<addPixel id="0" origin="(0,pitch/4+(nChannels-1)*pitch+pitch/2)" size="(pitch/2,pitch/2)" rotation="0" triangle="true"/>
<addPixel id="1" origin="(0,(nChannels-1)*pitch-pitch/4)" size="(pitch/2,pitch)" rotation="0" />
<for variable="nPix" from="0" to="nChannels-1" step="1" >
<addPixel id="${nPix}+2" origin="((0.5+${nPix})*pitch,(nChannels-1)*pitch-pitch/4)" size="(pixelSize,pixelSize)" rotation="45" />
</for>
</readoutChannel>
</readoutModule>
......@@ -54,10 +54,10 @@
<TRestReadout name="PixelReadout_MxM" title="PIXEL readout ${PITCH}mm-Pitch ${MODULES}x${MODULES} modules ${CHANNELS}+${CHANNELS} channels" >
<variable name="nChannels" value="${CHANNELS}" />
<variable name="nModules" value="${MODULES}" />
<variable name="pitch" value="${PITCH}" />
<variable name="pixelSize" value="${PITCH}/sqrt(2.)" />
<myParameter name="nChannels" value="${CHANNELS}" />
<myParameter name="nModules" value="${MODULES}" />
<myParameter name="pitch" value="${PITCH}" />
<myParameter name="pixelSize" value="${PITCH}/sqrt(2.)" />
<parameter name="mappingNodes" value="0" />
......@@ -101,10 +101,10 @@
</TRestReadout>
<TRestReadout name="PandaReadout_MxM" title="PANDA readout ${PITCH}mm-Pitch ${MODULES}x${MODULES} modules ${CHANNELS}+${CHANNELS} channels" >
<variable name="nChannels" value="${CHANNELS}" />
<variable name="nModules" value="${MODULES}" />
<variable name="pitch" value="${PITCH}" />
<variable name="pixelSize" value="${PITCH}/sqrt(2.)" />
<myParameter name="nChannels" value="${CHANNELS}" />
<myParameter name="nModules" value="${MODULES}" />
<myParameter name="pitch" value="${PITCH}" />
<myParameter name="pixelSize" value="${PITCH}/sqrt(2.)" />
<parameter name="mappingNodes" value="0" />
......@@ -139,9 +139,9 @@
</TRestReadout>
<TRestReadout name="Panda_SJTU_Proto" title="PANDA SJTU Prototype readout. 7 modules ${PITCH}mm-Pitch ${CHANNELS}+${CHANNELS} channels" >
<variable name="nChannels" value="${CHANNELS}" />
<variable name="pitch" value="${PITCH}" />
<variable name="pixelSize" value="${PITCH}/sqrt(2.)" />
<myParameter name="nChannels" value="${CHANNELS}" />
<myParameter name="pitch" value="${PITCH}" />
<myParameter name="pixelSize" value="${PITCH}/sqrt(2.)" />
<parameter name="mappingNodes" value="0" />
......@@ -191,9 +191,9 @@
</TRestReadout>
<TRestReadout name="Panda-CDR" title="PANDA SJTU Jinping readout. 2 planes 41 modules ${PITCH}mm-Pitch ${CHANNELS}+${CHANNELS} channels" >
<variable name="nChannels" value="${CHANNELS}" />
<variable name="pitch" value="${PITCH}" />
<variable name="pixelSize" value="${PITCH}/sqrt(2.)" />
<myParameter name="nChannels" value="${CHANNELS}" />
<myParameter name="pitch" value="${PITCH}" />
<myParameter name="pixelSize" value="${PITCH}/sqrt(2.)" />
<parameter name="mappingNodes" value="0" />
......@@ -262,9 +262,9 @@
then we use addReadoutModule giving the name as reference -->
<TRestReadout name="Panda-Jinping" title="PANDA SJTU Jinping readout. 2 planes 33 modules ${PITCH}mm-Pitch ${CHANNELS}+${CHANNELS} channels" >
<variable name="nChannels" value="${CHANNELS}" />
<variable name="pitch" value="${PITCH}" />
<variable name="pixelSize" value="${PITCH}/sqrt(2.)" />
<myParameter name="nChannels" value="${CHANNELS}" />
<myParameter name="pitch" value="${PITCH}" />
<myParameter name="pixelSize" value="${PITCH}/sqrt(2.)" />
<parameter name="mappingNodes" value="0" />
......
doc/doxygen/images/Fit600.png

26.1 KB | W: | H:

doc/doxygen/images/Fit600.png

25.4 KB | W: | H:

doc/doxygen/images/Fit600.png
doc/doxygen/images/Fit600.png
doc/doxygen/images/Fit600.png
doc/doxygen/images/Fit600.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -10,7 +10,7 @@
restManager --c electronsSimu.rml --i example.root --o output.root
<TRestRun name="Run metadata" title="REST Metadata run info (template)">
<parameter name="experiment" value="Test"/>
<parameter name="experimentName" value="Test"/>
<parameter name="runType" value="simulation"/>
<parameter name="runNumber" value="-1"/> //it will find next run number from database when we use "auto"
<parameter name="runTag" value="Template"/>
......
......@@ -8,7 +8,7 @@ internal values are saved.
<TRestManager name="RESTManagerSim" title="Template manager to process a simulation generated by restG4.">
<TRestRun name="Run metadata" title="REST Metadata run info (template)" verboseLevel="info">
<parameter name="experiment" value="Test"/>
<parameter name="experimentName" value="Test"/>
<parameter name="runType" value="simulation"/>
<parameter name="runNumber" value="-1"/> //it will find next run number from database when we use "auto"
<parameter name="runTag" value="preserve"/>
......
......@@ -8,7 +8,7 @@ internal values are saved.
<TRestManager name="RESTManagerSim" title="Template manager to process a simulation generated by restG4.">
<TRestRun name="Run metadata" title="REST Metadata run info (template)" verboseLevel="info">
<parameter name="experiment" value="Test"/>
<parameter name="experimentName" value="Test"/>
<parameter name="runType" value="simulation"/>
<parameter name="runNumber" value="-1"/> //it will find next run number from database when we use "auto"
<parameter name="runTag" value="preserve"/>
......
......@@ -32,12 +32,13 @@ Finally we call the method TRestRun::FormOutputFile() through TRestManager to sa
<TRestReadout name="Panda-CDR" title="PANDA CDR" file="readouts.rml" />
<TRestReadout name="PandaReadout_MxM" title="PANDA readout 7module" >
<parameter name="verboseLevel" value="info"/>
<parameter name="mappingNodes" value="0" />
<variable name="nChannels" value="${CHANNELS}" />
<variable name="nModules" value="${MODULES}" />
<variable name="pitch" value="${PITCH}" />
<variable name="pixelSize" value="${PITCH}/sqrt(2.)" />
<variable name="myDecodingFile" value="${REST_INPUTDATA}/decoding/MM_On_AGET0-1.dec"/>
<myParameter name="nChannels" value="${CHANNELS}" />
<myParameter name="nModules" value="${MODULES}" />
<myParameter name="pitch" value="${PITCH}" />
<myParameter name="pixelSize" value="${PITCH}/sqrt(2.)" />
<myParameter name="myDecodingFile" value="${REST_INPUTDATA}/decoding/MM_On_AGET0-1.dec"/>
<readoutModule name="module" file="microbulkModule.rml"/>
......
axion @ ad12047d
Subproject commit b78f185dc2c089e7730706fc9e7ee35a77287cbd
Subproject commit ad12047d383422790af826102cfc004629df0ec8
/*************************************************************************
* This file is part of the REST software framework. *
* *
* Copyright (C) 2016 GIFNA/TREX (University of Zaragoza) *
* For more information see http://gifna.unizar.es/trex *
* *
* REST is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* REST is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have a copy of the GNU General Public License along with *
* REST in $REST_PATH/LICENSE. *
* If not, see http://www.gnu.org/licenses/. *
* For the list of contributors see $REST_PATH/CREDITS. *
*************************************************************************/
#ifndef RestCore_TRestDummyAnalysisProcess
#define RestCore_TRestDummyAnalysisProcess
#include "TRestEventProcess.h"
//! TODO Write a one line brief description here!
class TRestDummyAnalysisProcess : public TRestEventProcess {
private:
// If the member is followed by //! it will not be written to disk.
// If the member is followed by //< it will be registered inside the object when written to disk./
//
// We use //! usually when we just want to have an auxiliar variable to be initialized and available
// by ProcessEvent or other methods. I.e. fReadout, fGas, ...
/// A pointer to the event data
TRestEvent* fEvent = NULL; //!
/// This is just a dummy member.
Double_t fMember; //<
protected:
void InitProcess();
void InitFromConfigFile();
void Initialize();
void LoadDefaultConfig();
public:
any GetInputEvent() { return fEvent; }
any GetOutputEvent() { return fEvent; }
TRestEvent* ProcessEvent(TRestEvent* evInput);
void LoadConfig(std::string cfgFilename, std::string name = "");
void PrintMetadata();
/// Returns a new instance of this class
TRestEventProcess* Maker() { return new TRestDummyAnalysisProcess; }
/// Returns the name of this process
TString GetProcessName() { return (TString) "DummyAnalysisProcess"; }
TRestDummyAnalysisProcess();
TRestDummyAnalysisProcess(char* cfgFileName);
~TRestDummyAnalysisProcess();
// If new members are added, removed or modified in this class version number must be increased!
ClassDef(TRestDummyAnalysisProcess, 1);
};
#endif
/*************************************************************************
* This file is part of the REST software framework. *
* *
* Copyright (C) 2016 GIFNA/TREX (University of Zaragoza) *
* For more information see http://gifna.unizar.es/trex *
* *
* REST is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* REST is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have a copy of the GNU General Public License along with *
* REST in $REST_PATH/LICENSE. *
* If not, see http://www.gnu.org/licenses/. *
* For the list of contributors see $REST_PATH/CREDITS. *
*************************************************************************/
//////////////////////////////////////////////////////////////////////////
///
///
/// TODO Write a proper documentation here
///
/// \warning REST is under continous development. This documentation is
/// offered to you by the REST community. Your HELP is needed to keep this
/// file up to date. Feel free to contribute fixing typos, updating
/// information or adding new contributions. See also our Contribution Guide.
///
///--------------------------------------------------------------------------
///
/// RESTsoft - Software for Rare Event Searches with TPCs
///
/// History of developments:
///
/// 2020-Nov: First implementation
/// AUTHOR NAME
///
/// \class TRestDummyAnalysisProcess
/// \author AUTHOR NAME
///
/// <hr>
///
#include "TRestDummyAnalysisProcess.h"
using namespace std;
ClassImp(TRestDummyAnalysisProcess);
///////////////////////////////////////////////
/// \brief Default constructor
///
TRestDummyAnalysisProcess::TRestDummyAnalysisProcess() { Initialize(); }
///////////////////////////////////////////////
/// \brief Constructor loading data from a config file
///
/// The path to the config file can be specified using full path,
/// absolute or relative.
///
/// If the file is not found then REST will try to find the file on
/// the default paths defined in REST Framework, usually at the
/// REST_PATH installation directory. Additional search paths may be
/// defined using the parameter `searchPath` in globals section. See
/// TRestMetadata description.
///
/// \param cfgFileName A const char* giving the path to an RML file.
///
TRestDummyAnalysisProcess::TRestDummyAnalysisProcess(char* cfgFileName) {
Initialize();
LoadConfig(cfgFileName);
}
///////////////////////////////////////////////
/// \brief Default destructor
///
TRestDummyAnalysisProcess::~TRestDummyAnalysisProcess() {}
///////////////////////////////////////////////
/// \brief Function to load the default config in absence of RML input
///
void TRestDummyAnalysisProcess::LoadDefaultConfig() {
SetName(this->ClassName());
SetTitle("Default config");
}
///////////////////////////////////////////////
/// \brief Function to load the configuration from an external configuration
/// file.
///
/// If no configuration path is defined in TRestMetadata::SetConfigFilePath
/// the path to the config file must be specified using full path, absolute or
/// relative.
///
/// \param cfgFileName A const char* giving the path to an RML file.
/// \param name The name of the specific metadata. It will be used to find the
/// correspondig TRestDummyAnalysisProcess section inside the RML.
///
void TRestDummyAnalysisProcess::LoadConfig(std::string cfgFilename, std::string name) {
if (LoadConfigFromFile(cfgFilename, name)) LoadDefaultConfig();
}
///////////////////////////////////////////////
/// \brief Function to use in initialization of process members before starting
/// to process the event
///
void TRestDummyAnalysisProcess::InitProcess() {
// Initialize any class members if necessary
}
///////////////////////////////////////////////
/// \brief Function to initialize input/output event members and define the
/// section name and library version
///
void TRestDummyAnalysisProcess::Initialize() { SetSectionName(this->ClassName()); }
///////////////////////////////////////////////
/// \brief The main processing event function
///
TRestEvent* TRestDummyAnalysisProcess::ProcessEvent(TRestEvent* evInput) {
fEvent = evInput;
// ProcessEvent is in the loop, each call a new event will be processed.
// An analysis process does not specialize the event to Hits, Geant4, Signal, ...
// Therefore, we should not acess the event data at a pure analysis process
// Just basic access will be availble such as eventId, timestamp, etc.
//
// A pure analysis process will usually perform some calculations and then
// add the calculated value to the analysis tree.
//
// SetObservableValue( "myNewObsName", calculatedValue );
return fEvent;
}
void TRestDummyAnalysisProcess::EndProcess() {
/// At the EndProcess stage all events have been alreaady processed and
/// we can already get access to the full analysis tree.
///// Just some examples accessing analysis tree
///// We can get now any entry.
// this->GetFullAnalysisTree()->GetEntry(3);
// this->GetFullAnalysisTree()->PrintObservables();
// cout << "Nobs : " << fRunInfo->GetAnalysisTree()->GetNumberOfObservables() << endl;
// cout << "Entries : " << fRunInfo->GetAnalysisTree()->GetEntries() << endl;
// cout << "Nobs : " << this->GetFullAnalysisTree()->GetNumberOfObservables() << endl;
// cout << "Entries : " << this->GetFullAnalysisTree()->GetEntries() << endl;
}
///////////////////////////////////////////////
/// \brief Function reading input parameters from the RML
/// TRestDummyAnalysisProcess section
///
void TRestDummyAnalysisProcess::InitFromConfigFile() {
//
// Implement any special members to be read from the
// corresponding RML section
// Basic <parameter name="member" should be automatically identified with member fMember
//
}
///////////////////////////////////////////////
/// \brief It prints out basic information of the SQL database used to generate the analysis tree observables.
/// And the SQL fields extracted together with its corresponding analysis tree name, and minimum and maximum
/// values during the duration of the run.
///
void TRestDummyAnalysisProcess::PrintMetadata() {
BeginPrintProcess();
//
// Print out any metadata member here using metadata output directive
// metadata << "My output : " << fMember << endl;
//
EndPrintProcess();
}
// Implement any auxiliar methods as needed
......@@ -75,10 +75,7 @@ TRestDummyNameProcess::TRestDummyNameProcess(char* cfgFileName) {
///////////////////////////////////////////////
/// \brief Default destructor
///
TRestDummyNameProcess::~TRestDummyNameProcess() {
delete fDummyEvent;
delete fDummyEvent;
}
TRestDummyNameProcess::~TRestDummyNameProcess() { delete fDummyEvent; }
///////////////////////////////////////////////
/// \brief Function to load the default config in absence of RML input
......