Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • le.koch/cbmroot
  • patrick.pfistner_AT_kit.edu/cbmroot
  • lena.rossel_AT_stud.uni-frankfurt.de/cbmroot
  • i.deppner/cbmroot
  • fweig/cbmroot
  • karpushkin_AT_inr.ru/cbmroot
  • v.akishina/cbmroot
  • rishat.sultanov_AT_cern.ch/cbmroot
  • l_fabe01_AT_uni-muenster.de/cbmroot
  • pwg-c2f/cbmroot
  • j.decuveland/cbmroot
  • a.toia/cbmroot
  • i.vassiliev/cbmroot
  • n.herrmann/cbmroot
  • o.lubynets/cbmroot
  • se.gorbunov/cbmroot
  • cornelius.riesen_AT_physik.uni-giessen.de/cbmroot
  • zhangqn17_AT_mails.tsinghua.edu.cn/cbmroot
  • bartosz.sobol/cbmroot
  • ajit.kumar/cbmroot
  • computing/cbmroot
  • a.agarwal_AT_vecc.gov.in/cbmroot
  • osingh/cbmroot
  • wielanek_AT_if.pw.edu.pl/cbmroot
  • malgorzata.karabowicz.stud_AT_pw.edu.pl/cbmroot
  • m.shiroya/cbmroot
  • s.roy/cbmroot
  • p.-a.loizeau/cbmroot
  • a.weber/cbmroot
  • ma.beyer/cbmroot
  • d.klein/cbmroot
  • d.smith/cbmroot
  • mvdsoft/cbmroot
  • d.spicker/cbmroot
  • y.h.leung/cbmroot
  • m.deveaux/cbmroot
  • mkunold/cbmroot
  • h.darwish/cbmroot
  • f_fido01_AT_uni-muenster.de/cbmroot
  • g.kozlov/cbmroot
  • d.emschermann/cbmroot
  • evgeny.lavrik/cbmroot
  • v.friese/cbmroot
  • f.uhlig/cbmroot
  • ebechtel_AT_ikf.uni-frankfurt.de/cbmroot
  • a.senger/cbmroot
  • praisig/cbmroot
  • s.lebedev/cbmroot
  • redelbach_AT_compeng.uni-frankfurt.de/cbmroot
  • p.subramani/cbmroot
  • a_meye37_AT_uni-muenster.de/cbmroot
  • om/cbmroot
  • o.golosov/cbmroot
  • l.chlad/cbmroot
  • a.bercuci/cbmroot
  • d.ramirez/cbmroot
  • v.singhal/cbmroot
  • h.schiller/cbmroot
  • apuntke/cbmroot
  • f.zorn/cbmroot
  • rubio_AT_physi.uni-heidelberg.de/cbmroot
  • p.chudoba/cbmroot
  • apuntke/mcbmroot
  • r.karabowicz/cbmroot
64 results
Show changes
Commits on Source (13)
  • Eoin Clerkin's avatar
    Robustness of switch defaults · ba93e3ea
    Eoin Clerkin authored
    Allows a non standard install directory for cbmroot.
    
    Updates the geometry repository tags.
    ba93e3ea
  • Eoin Clerkin's avatar
    Macros for APR21 defaults with shifted placements · e6c87d7a
    Eoin Clerkin authored
    pipe_v16e_1e is the shifted pipe_v16b_1e by creation of node.
    pipe_v20b_1m is the shifted pipe_v20a_1m
    sts_v20a is the shifted sts_v19a geometry
    much_v20c_sis100_1m_lmvm is shifted lmvm verison of v20a
    much_v20c_sis100_1m_jpsi is shifted version of v20a
    trd_v20c_1(e,h,m_ is the shifted trd_v20b_1(e,h,m)
    tof_v20c_1(e,h,m) is the shifted tof_v20b_1(e,h.m)
    psd_v20c is the shifted psd_v20a
    
    Geometries without macros are manually shifted by editing of their TFile.
    
    Updates external repos tags
    For geometry, parameter and input repos.
    Updated tags in switch_defaults.sh.
    run_tra_(file|beam).C now positions the target dependent on the setup file chosen.
    
    Updates README.md file in macro/geometry directory.
    
    Adds standard tra, digi, and reco ctest for origin redefinition
    and DEC21 candidate geometries for the electron and hadron setups.
    e6c87d7a
  • sergeizharko's avatar
    4baf788b
  • sergeizharko's avatar
    L1Parameters.h: new file ; L1BaseStationInfo.h: getters and setters added;... · b4e190e6
    sergeizharko authored
    L1Parameters.h: new file ; L1BaseStationInfo.h: getters and setters added; L1Station.h: minor modifications; L1Field.h: magic constant '21' changed to the constexpr parameter L1Parameters::kN_FS_COEFFS
    b4e190e6
  • sergeizharko's avatar
    COMMIT FROM 23.12.2021 · 5834131a
    sergeizharko authored
      - cbmroot/reco/L1/L1Algo/L1BaseStationInfo.h:
        > a prototype of user-friendly interface to L1Station and other geometry inputs to L1Algo (experimental)
        > added setters and getters for L1Station data fields
        > added calculation of hidden L1Station properties
        > added Print() method
      - cbmroot/reco/L1/L1Algo/L1Parameters.h:
        > add new compile time constants: kMaxNFieldApproxCoefficients, kStationBits, kThreadBits, kTripletBits,
          kMaxNstations, kMaxNthreads, kMaxNtriplets
        > add new runtime "constants": fMaxDoubletsPerSinglet, fMaxTripletPerDoublets
        > add Print() method
      - cbmroot/reco/L1/L1Algo/L1Algo.h:
        > modifications according to the constants transfer to the L1Parameters class (example: fkMaxNthreads ==> L1Parameters::kMaxNthreads)
      - cbmroot/reco/L1/L1Algo/L1Algo.cxx:
        > add L1Parameters::Print() call from L1Algo::Init()
        > modifications according to the constants transfer to the L1Parameters class (example: fkMaxNthreads ==> L1Parameters::kMaxNthreads)
      - cbmroot/reco/L1/L1Algo/L1CATrackFinder.cxx:
        > modifications according to the constants transfer to the L1Parameters class (example: fkMaxNthreads ==> L1Parameters::kMaxNthreads)
      - cbmroot/reco/L1/L1Algo/L1TrackFitter.cxx:
        > modifications according to the constants transfer to the L1Parameters class (example: fkMaxNthreads ==> L1Parameters::kMaxNthreads)
      - cbmroot/reco/L1/L1Algo/L1Field.h:
        > magic constant '21' changed to L1Parameters::kMaxNFieldApproxCoefficients (compile time)
      - cmbroot/reco/L1/CbmL1.h:
        > add a L1Paramters class field (currently ptr to address in the heap) to CbmL1
        > add getter for the L1Parameters class field to CbmL1
      - cbmroot/reco/L1/CbmL1.cxx:
        > add transfer of the L1Parameters data from CbmL1 to L1Algo
        > modifications according to the constants transfer to the L1Parameters class (example: fkMaxNthreads ==> L1Parameters::kMaxNthreads)
      - cbmroot/macro/run/run_reco.C:
        > add example of L1Algo runtime constants modification
    5834131a
  • sergeizharko's avatar
    a8b04f47
  • sergeizharko's avatar
    L1Parameters.h: new file ; L1BaseStationInfo.h: getters and setters added;... · 2f93033b
    sergeizharko authored
    L1Parameters.h: new file ; L1BaseStationInfo.h: getters and setters added; L1Station.h: minor modifications; L1Field.h: magic constant '21' changed to the constexpr parameter L1Parameters::kN_FS_COEFFS
    2f93033b
  • sergeizharko's avatar
    COMMIT FROM 23.12.2021 · f90e27f6
    sergeizharko authored
      - cbmroot/reco/L1/L1Algo/L1BaseStationInfo.h:
        > a prototype of user-friendly interface to L1Station and other geometry inputs to L1Algo (experimental)
        > added setters and getters for L1Station data fields
        > added calculation of hidden L1Station properties
        > added Print() method
      - cbmroot/reco/L1/L1Algo/L1Parameters.h:
        > add new compile time constants: kMaxNFieldApproxCoefficients, kStationBits, kThreadBits, kTripletBits,
          kMaxNstations, kMaxNthreads, kMaxNtriplets
        > add new runtime "constants": fMaxDoubletsPerSinglet, fMaxTripletPerDoublets
        > add Print() method
      - cbmroot/reco/L1/L1Algo/L1Algo.h:
        > modifications according to the constants transfer to the L1Parameters class (example: fkMaxNthreads ==> L1Parameters::kMaxNthreads)
      - cbmroot/reco/L1/L1Algo/L1Algo.cxx:
        > add L1Parameters::Print() call from L1Algo::Init()
        > modifications according to the constants transfer to the L1Parameters class (example: fkMaxNthreads ==> L1Parameters::kMaxNthreads)
      - cbmroot/reco/L1/L1Algo/L1CATrackFinder.cxx:
        > modifications according to the constants transfer to the L1Parameters class (example: fkMaxNthreads ==> L1Parameters::kMaxNthreads)
      - cbmroot/reco/L1/L1Algo/L1TrackFitter.cxx:
        > modifications according to the constants transfer to the L1Parameters class (example: fkMaxNthreads ==> L1Parameters::kMaxNthreads)
      - cbmroot/reco/L1/L1Algo/L1Field.h:
        > magic constant '21' changed to L1Parameters::kMaxNFieldApproxCoefficients (compile time)
      - cmbroot/reco/L1/CbmL1.h:
        > add a L1Paramters class field (currently ptr to address in the heap) to CbmL1
        > add getter for the L1Parameters class field to CbmL1
      - cbmroot/reco/L1/CbmL1.cxx:
        > add transfer of the L1Parameters data from CbmL1 to L1Algo
        > modifications according to the constants transfer to the L1Parameters class (example: fkMaxNthreads ==> L1Parameters::kMaxNthreads)
      - cbmroot/macro/run/run_reco.C:
        > add example of L1Algo runtime constants modification
    f90e27f6
  • Sergei Zharko's avatar
    Update run_reco.C · e03af143
    Sergei Zharko authored
    e03af143
  • sergeizharko's avatar
    Apply clang-format · ec579a59
    sergeizharko authored
    ec579a59
  • sergeizharko's avatar
    Apply clang-format · 49ecb13f
    sergeizharko authored
    49ecb13f
  • s.zharko@gsi.de's avatar
    modifications before clang-format · e6970988
    s.zharko@gsi.de authored
    e6970988
  • s.zharko@gsi.de's avatar
    Apply clang-format · 47c4accf
    s.zharko@gsi.de authored
    47c4accf
Showing
with 10317 additions and 61 deletions
set(GEOMETRY_VERSION 149fccc1c705facf407b56bcb255706fc563d4b2)
set(GEOMETRY_VERSION 99319732d04191397dc8cd19ad963aaa86ffc075)
set(GEOMETRY_SRC_URL "https://git.cbm.gsi.de/CbmSoft/cbmroot_geometry.git")
......
set(INPUT_VERSION 4adb32f264b04a8fb19532d14ff0dbe72af7c095)
set(INPUT_VERSION 21433d7ba368f516d3665fbb9381d5ec2624d39d)
set(INPUT_SRC_URL "https://git.cbm.gsi.de/CbmSoft/cbmroot_input.git")
......
set(PARAMETER_VERSION a74866722d4dae15a370aea0399349a2bb1024d6)
set(PARAMETER_VERSION 816ea7d6984c2826442d1662627a19a56629b461)
set(PARAMETER_SRC_URL "https://git.cbm.gsi.de/CbmSoft/cbmroot_parameter.git")
......
......@@ -6,9 +6,9 @@ files which contain a TGeoManager.
## Scan Geometry (scan_geometry.C)
Scan geometry travels through the root geometry hierachy of a typical root geometry binary and outputs standard information regarding the node to the screen. There are several options, some of which are commented out in the file, which allows the easy comparison of root binaries. A GRAPHVIZ file named geo.gv is also output to the working directory.
Scan geometry travels through the root geometry hierarchy of a typical root geometry binary and outputs standard information regarding the node to the screen. There are several options, some of which are commented out in the file, which allows the easy comparison of root binaries. A GRAPHVIZ file named geo.gv is also output to the working directory.
### Examing Text
### Examining Text
A typical use may be
......@@ -22,15 +22,15 @@ to look at output on screen. To save this output to a file, something like
root -l -q '~/cbmroot/macro/geometry/scan_geometry.C("tof_v20a_1h.geo.root")' 2>&1 1>tof_v20a_1h
```
Outputing two files may be compared with standard unix diff such as
Outputting two files may be compared with standard UNIX diff such as
```
diff -y -W 200 tof_v20a_1h tof_v20b_1h | less
```
### Examining Graphical Represetation
### Examining Graphical Representation
Sometimes, especially if the output is very large, it can be more insighted, to get the overall picture to look at a graph tree of the volumes in a geometry instead. This can be done for a single detector or indeed the whole experimental setup, e.g. test.geo.root To make a pdf graph, a basic graph may be made with a command like
Sometimes, especially if the output is very large, it can be more insightful, to get the overall picture to look at a graph tree of the volumes in a geometry instead. This can be done for a single detector or indeed the whole experimental setup, e.g. test.geo.root To make a pdf graph, a basic graph may be made with a command like
```
sed -n '2,$p' geo.gv | head -n -1 | sort | uniq -c | awk 'BEGIN{print "digraph {"}{printf "%s -> %s [label=\"%d\"]\n", $2, $4, $1}END{print "}"}' > geo2.gv
......@@ -45,7 +45,7 @@ The macro compares the media information at execution time with the media
information assigned to the nodes when building the detector system
geometry. The macro is executed automatically in the CbmRoot test suite for
all tested setups.
If needed it can be executed also manually as decribed in the following.
If needed it can be executed also manually as described in the following.
If the CbmRoot run time environment is set and a geometry file
for a CBM setup is available the macro is used in the following way
......@@ -54,7 +54,7 @@ root -l $VMCWORKDIR/macro/geometry/check_media.C'("setup_name")'
The setup_name is the name of the setup used during the simulation to create
the geometry file.
This macro to check the sanity odf the full geometry is/was needed due to
This macro to check the sanity of the full geometry is/was needed due to
the way we build the complete CBM geometry from independent geometries of the
several detector systems.
When building the complete geometry it happened that the media information
......@@ -107,7 +107,7 @@ To achieve this some preparatory work is needed.
## print_medialist.C
The macro can be used to print the information which is stored in the *geometrycheck.root
files. The output is a list of all stored nodes with the corresponing media
files. The output is a list of all stored nodes with the corresponding media
name. To use the macro do
root -l $VMCWORKDIR/macro/geometry/print_medialist.C\(\"$VMCWORKDIR/input/geometry_check/sts_v19a_geometrycheck.root\"\)
......@@ -127,19 +127,34 @@ output file example.txt
## costum_setup.sh
Intended for inspection of geometry setups. At the user risk, it may also work for simulation.
Generates a costum-setup file for the CBM experiemnt. User is prompted which subsystem and its configuration to include.
The scripts only works for default geometries and is not intended to switch between geometry versions.
For detectors which are placed on railsystems the user will be prompted as to specify its distance to the target.
Specifying a variable like PSD_INCLUDE=1 will skip question relating to including the PSD, allowing a user to predefine a configuration skip.
Suggested command to create costum setup file:
sh costum-setup.sh
Creates the run_transport_costum.C and run_reco_costum.C to use the setup_sis100_auto instead of setup_sis100_electron as default.
Questions may be skipped by specifying to include a subsystem MAG_INCLUDE=1 or exclude MAG_INCLUDE=0. To a limited extent some subsystem
detectors may be specified such as MAG_TAG="v20a".
---
## switch_defaults.sh
This script switches between official and trial versions of the CBMROOT geometries. This
is intended for use by a expert user, who will remember to swith back to the official
geometry relase (currently APR21) once the specific use case has ended. Current options
is intended for use by a expert user, who will remember to switch back to the official
geometry release (currently APR21) once the specific use case has ended. Current options
include This script switches between official and trial versions of the CBMROOT geometries. This
is intended for use by a knowledgable user, who will remember to swith back to the official
geometry relase (currently APR21) once the specific use case has ended. Current options
is intended for use by a knowledgeable user, who will remember to switch back to the official
geometry release (currently APR21) once the specific use case has ended. Current options
include
* APR20 - (previous 2020 default geometries. Run old defaults with the new CBMROOT software.)
* APR21 - (current 2021 default geometries. This is the official release geometries.
* TEST - (Geoemtries shift such that the center of the magnet is the origin of the CBM exp.)
* TEST - (Geometries shift such that the center of the magnet is the origin of the CBM exp.)
......@@ -5,17 +5,22 @@
echo "programme starts"
if false; then
if [ -z ${VMWORKDIR} ];
then
cat << EOT
BUILT AND CONFIGURATION CBMROOT ENIVORNMENT NOT DETECTED\n
HAVE YOU
. build/config.sh -a
SCRIPTS REQUIRES A RUNNING SYSTEM.
EOT
exit
fi
# Detecting the GEOMETRY and PARAMETER GIT DIRECTORIES
if [ -d ${PWD}/../../geometry/.git -a -d ${PWD}/../../parameters/.git ]; then
GEO_SRC_DIR="$PWD/../../geometry"
PAR_SRC_DIR="$PWD/../../parameters"
cd $PWD/../run
RUN_SRC_DIR=$PWD
cd -
else
if [ -z ${VMWORKDIR} -a -d ${VMCWORKDIR}/geometry/.git -a -d ${VMCWORKDIR}/parameters/.git ]; then
PAR_SRC_DIR="${VMCWORKDIR}/parameters"
GEO_SRC_DIR="${VMCWORKDIR}/geometry"
RUN_SRC_DIR="${VMCWORKDIR}/macro/run"
else
echo "Geometry or Parameter Git Source Directory not detected"
exit
fi
fi
# TAG FOR THE OFFICIAL APR 2019 CBMROOT SW Release
......@@ -27,16 +32,13 @@ APR21_GEOTAG="875439f929577d678b86bbc243b8f99a094fd31c"
APR21_PARATAG="fc62e1c9f2a67109e45389ed93537a7d08973ce2"
# TAG FOR NEW EXPERIMENTAL GEOMETRIES. NEXT SOFTWARE RELEASE CANDIDATES
TEST_GEOTAG="114c7830dc6b8460a8527844aa253ec0c33b414d"
TEST_PARATAG="21bed5c5e746efdb63b696f4053b9e5f65f940a8"
TEST_GEOTAG="ac089a58dd6ba97ebd2253be7e72f08c46679083"
TEST_PARATAG="a80c596bae4181fdad663140d5249d09c2bac1ff"
# GEOMETRY AMD PARAMETER GIT REPOSITORY
GIT_GEOREPO="https://git.cbm.gsi.de/e.clerkin/cbmroot_geometry.git"
GIT_PARAREPO="https://git.cbm.gsi.de/e.clerkin/cbmroot_parameter.git"
##########1234567890##########1234567890##########1234567890##########1234567890##########
cat << EOT
*******************************************************************************************
......@@ -57,12 +59,16 @@ EOT
read RELEASE
case "${RELEASE}" in
APR20) echo "You specified APR20"; GEOMETRY_TAG=${APR20_GEOTAG}; PARAMETER_TAG=${APR20_PARATAG} ;;
APR21) echo "You specified APR21"; GEOMETRY_TAG=${APR21_GEOTAG}; PARAMETER_TAG=${APR21_PARATAG} ;;
TEST) echo "You specified TEST "; GEOMETRY_TAG=${TEST_GEOTAG}; PARAMETER_TAG=${TEST_PARATAG} ;;
APR20) echo "You specified APR20"; GEOMETRY_TAG=${APR20_GEOTAG}; PARAMETER_TAG=${APR20_PARATAG}; TARGET_Z_POS=0 ;;
APR21) echo "You specified APR21"; GEOMETRY_TAG=${APR21_GEOTAG}; PARAMETER_TAG=${APR21_PARATAG}; TARGET_Z_POS=0 ;;
TEST) echo "You specified ORIGIN_SHIFT "; GEOMETRY_TAG=${TEST_GEOTAG}; PARAMETER_TAG=${TEST_PARATAG}; TARGET_Z_POS=-40 ;;
*) echo "$ANSWER is an unknown option"; exit 1 ;;
esac
cat << EOT
Have you read above, and understand that you will need to rerun the script to revert the changes?
TYPE Yes for confirmation ????
......@@ -74,10 +80,10 @@ if (echo "${CONFIRMATION}" | sed -n '/^Yes$/!{q10}')
then
echo "Yes typed!"
sed -i 's/Double_t[[:space:]]targetZpos.*$/Double_t targetZpos = '${TARGET_Z_POS}';/' ${RUN_SRC_DIR}/run_tra_file.C;
# Geometry Repostiory
cd ${VMCWORKDIR}/geometry
cd ${GEO_SRC_DIR}
git checkout ${GEOMETRY_TAG}
if [ $? -ne 0 ]; then
git fetch ${GIT_GEOREPO} ${GEOMETRY_TAG}
......@@ -90,7 +96,7 @@ then
cd $OLDPWD
# Parameter Repository
cd ${VMCWORKDIR}/parameters
cd ${PAR_SRC_DIR}
git checkout ${PARAMETER_TAG}
if [ $? -ne 0 ]; then
git fetch ${GIT_PARAREPO} ${PARAMETER_TAG}
......@@ -108,17 +114,16 @@ else
echo "No changed to geometry and parameter repositoroes made"
fi
cat << EOT
The position of the target is at ${TARGET_Z_POS} cm from the origin.
You may now run the standard CBMROOT macros, e.g.
root -l run_tra_file.C
root -l run_digi.C
root -l run_reco.C
root -l -q ${RUN_SRC_DIR}/run_tra_file.C
root -l -q ${RUN_SRC_DIR}/run_digi.C
root -l -q ${RUN_SRC_DIR}/run_reco.C
and the specified default geometries will be used. To revert these changes, you may re-run this script or rebuild the CBMROOT framework.
EOT
echo "Program Ended"
......@@ -13,7 +13,7 @@ Set(NumEvents 3)
# --- Transport of UrQMD events
Set(testname much_transport)
add_test(${testname} ${MACRO_DIR}/run_transport.sh ${NumEvents} \"sis100_muon_lmvm\" \"muons\")
add_test(${testname} ${MACRO_DIR}/run_transport.sh ${NumEvents} \"sis100_muon_lmvm_APR21\" \"muons\")
SET_TESTS_PROPERTIES(${testname} PROPERTIES TIMEOUT "1200")
SET_TESTS_PROPERTIES(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "TestPassed;All ok")
set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP fixture_much_digi)
......@@ -28,7 +28,7 @@ set_tests_properties(${testname} PROPERTIES FIXTURES_SETUP fixture_much_reco)
# --- Reconstruction, event-by-event
Set(testname much_reco_event)
add_test(${testname} ${MACRO_DIR}/run_reco_event.sh ${NumEvents} \"muons\" \"sis100_muon_lmvm\" 1 1)
add_test(${testname} ${MACRO_DIR}/run_reco_event.sh ${NumEvents} \"muons\" \"sis100_muon_lmvm_APR21\" 1 1)
SET_TESTS_PROPERTIES(${testname} PROPERTIES TIMEOUT "1200")
SET_TESTS_PROPERTIES(${testname} PROPERTIES PASS_REGULAR_EXPRESSION "TestPassed;All ok")
set_tests_properties(${testname} PROPERTIES FIXTURES_REQUIRED fixture_much_reco)
......
This diff is collapsed.
This diff is collapsed.
/* Copyright (C) 2014-2017 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
SPDX-License-Identifier: GPL-3.0-only
Authors: Andrey Chernogorov, David Emschermann [committer] */
/******************************************************************************
** Creation of beam pipe geometry in ROOT format (TGeo).
**
** @file create_bpipe_geometry_v16b_1e.C
** @author Andrey Chernogorov <a.chernogorov@gsi.de>
** @date 04.06.2014
**
** pipe_v16e s a shifted by 40cm version of v16b
** pipe v16b_1e is actually identical to v14q and can be reused in the hadron setup
**
** SIS-100
** pipe_v14l = pipe_v14f + fixed sizes of vacuum chamber for mvd_v14a
**
** The beam pipe is composed of aluminium with a thickness proportional to the
** diameter (D(z)mm/60). It is placed directly into the cave as mother volume.
** The beam pipe consists of few sections excluding RICH section(1700-3700mm)
** because it is part of the RICH geometry. Each section has a PCON shape
** (including windows). There are two windows: first one @ 220mm with R600mm
** and 0.7mm thickness, second one of iron @ 6000mm with R600mm and 0.2mm
** thickness. The STS section is composed of cylinder D(z=220-500mm)=36mm and
** cone (z=500-1700mm). All sections of the beam pipe with conical shape have
** half opening angle 2.5deg. The PSD section of the beam pipe is missing
** because it is planned that it will be part of PSD geometry.
*****************************************************************************/
#include "TGeoManager.h"
#include <iomanip>
#include <iostream>
using namespace std;
// ------------- Steering variables -----------------------------------
// ---> Beam pipe material name
TString pipeMediumName = "aluminium"; // "beryllium" "carbon"
// ----------------------------------------------------------------------------
// ------------- Other global variables -----------------------------------
// ---> Macros name to info file
TString macrosname = "create_bpipe_geometry_v16e_1e.C";
// ---> Geometry file name (output)
TString rootFileName = "pipe_v16e_1e.geo.root";
// ---> Geometry name
TString pipeName = "pipe_v16e_1e";
// ----------------------------------------------------------------------------
TGeoVolume* MakePipe(Int_t iPart, Int_t nSects, Double_t* z, Double_t* rin, Double_t* rout, TGeoMedium* medium,
fstream* infoFile);
TGeoVolume* MakeVacuum(Int_t iPart, Int_t nSects, Double_t* z, Double_t* rin, Double_t* rout, TGeoMedium* medium,
fstream* infoFile);
// ============================================================================
// ====== Main function =====
// ============================================================================
void create_bpipe_geometry_v16e_1e()
{
// ----- Define beam pipe sections --------------------------------------
/** For v16e_1e: **/
TString pipe1name = "pipe1 - vacuum chamber";
const Int_t nSects1 = 6;
Double_t z1[nSects1] = {-50., -5., -5., 230.17, 230.17, 230.87}; // mm
Double_t rin1[nSects1] = {25., 25., 400., 400., 110., 110.};
Double_t rout1[nSects1] = {25.7, 25.7, 400.7, 400.7, 400.7, 130.7};
TString pipe2name = "pipe2 - first window @ 220mm, h=0.7mm, R=600mm";
const Int_t nSects2 = 7;
Double_t z2[nSects2] = {220., 220.7, 221.45, 223.71, 227.49, 230.17, 230.87}; // mm
Double_t rin2[nSects2] = {18., 18., 30., 60., 90., 105.86, 110.};
Double_t rout2[nSects2] = {18., 28.69, 39.3, 65.55, 94.14, 110., 110.};
TString pipevac1name = "pipevac1";
const Int_t nSects01 = 10;
Double_t z01[nSects01] = {-50., -5., -5., 220., 220., 220.7, 221.45, 223.71, 227.49, 230.17}; // mm
Double_t rin01[nSects01] = {0., 0., 0., 0., 18., 28.69, 39.3, 65.55, 94.14, 110.};
Double_t rout01[nSects01] = {25., 25., 400., 400., 400., 400., 400., 400., 400., 400.};
// tan (2.5) * 30 cm = 1.310 cm
// tan (2.5) * 40 cm = 1.746 cm
// tan (2.5) * 50 cm = 2.183 cm
// tan (2.5) * 60 cm = 2.620 cm
// tan (2.5) * 70 cm = 3.056 cm
// tan (2.5) * 80 cm = 3.493 cm
// tan (2.5) * 90 cm = 3.929 cm
// tan (2.5) * 100 cm = 4.366 cm
TString pipe3name = "pipe3 - STS section";
const Int_t nSects3 = 3;
Double_t z3[nSects3] = {220., 500., 1250.}; // mm
Double_t rout3[nSects3] = {18., 18., 55.};
Double_t rin3[nSects3];
for (Int_t i = 0; i < nSects3; i++) {
rin3[i] = rout3[i] - rout3[i] / 30.;
}
TString pipevac3name = "pipevac3";
const Int_t nSects03 = nSects3;
Double_t z03[nSects03] = {220., 500., 1250.}; // mm
Double_t rin03[nSects03] = {0., 0., 0.};
Double_t rout03[nSects03];
for (Int_t i = 0; i < nSects03; i++) {
rout03[i] = rin3[i];
}
TString pipe4name = "pipe4 - STS to RICH junction";
const Int_t nSects4 = 2;
Double_t z4[nSects4] = {1250., 1700.}; // mm
Double_t rout4[nSects4] = {55., 74.2};
Double_t rin4[nSects4];
for (Int_t i = 0; i < nSects4; i++) {
rin4[i] = rout4[i] - rout4[i] / 30.;
}
TString pipevac4name = "pipevac4";
const Int_t nSects04 = nSects4;
Double_t z04[nSects04] = {1250., 1700.}; // mm
Double_t rin04[nSects04] = {0., 0.};
Double_t rout04[nSects04];
for (Int_t i = 0; i < nSects04; i++) {
rout04[i] = rin4[i];
}
// Double_t rout04[nSects04]; for(Int_t i=0; i<nSects04; i++) { rout04[i]=rin4[i]-0.001; }
/*
TString pipe5name = "pipe5 - MUCH Al-section - inner part";
const Int_t nSects5 = 2;
Double_t z5[nSects5] = { 1850., 4000. }; // mm
Double_t rout5[nSects5] = { 109., 217. };
Double_t rin5[nSects5] = { 104., 212. };
TString pipevac5name = "pipevac5";
const Int_t nSects05 = 2;
Double_t z05[nSects05] = { 1850., 4000. }; // mm
Double_t rin05[nSects05] = { 0., 0. };
Double_t rout05[nSects05]; for(Int_t i=0; i<nSects05; i++) { rout05[i]=rin5[i]; }
// Double_t rout05[nSects05]; for(Int_t i=0; i<nSects05; i++) { rout05[i]=rin5[i]-0.001; }
*/
// --------------------------------------------------------------------------
// ------- Open info file -----------------------------------------------
TString infoFileName = rootFileName;
infoFileName.ReplaceAll("root", "info");
fstream infoFile;
fstream infoFileEmpty;
infoFile.open(infoFileName.Data(), fstream::out);
infoFile << "SIS-100. Beam pipe geometry created with " + macrosname << endl << endl;
infoFile << "pipe_v16c_1e is the shifted by 40cm version of pipe_v16b_1e " << endl;
infoFile << " pipe_v16b_1e = pipe_v14f + fixed sizes of vacuum chamber for "
"mvd_v14a"
<< endl
<< endl;
infoFile << " The beam pipe is composed of aluminium with a thickness "
"proportional to the"
<< endl;
infoFile << " diameter (D(z)mm/60). It is placed directly into the cave as "
"mother volume."
<< endl;
infoFile << " The beam pipe consists of few sections excluding RICH "
"section(1700-3700mm) "
<< endl;
infoFile << " because it is part of the RICH geometry. Each section has a "
"PCON shape "
<< endl;
infoFile << " (including windows). There are two windows: first one @ 220mm "
"with R600mm "
<< endl;
infoFile << " and 0.7mm thickness, second one of iron @ 6000mm with R600mm "
"and 0.2mm "
<< endl;
infoFile << " thickness. The STS section is composed of cylinder "
"D(z=220-500mm)=36mm and "
<< endl;
infoFile << " cone (z=500-1700mm). All sections of the beam pipe with "
"conical shape have "
<< endl;
infoFile << " half opening angle 2.5deg. The PSD section of the beam pipe is "
"missing "
<< endl;
infoFile << " because it is planned that it will be part of PSD geometry." << endl << endl;
infoFile << "Material: " << pipeMediumName << endl;
infoFile << "Thickness: D(z)mm/60" << endl << endl;
// --------------------------------------------------------------------------
// ------- Load media from media file -----------------------------------
FairGeoLoader* geoLoad = new FairGeoLoader("TGeo", "FairGeoLoader");
FairGeoInterface* geoFace = geoLoad->getGeoInterface();
TString geoPath = gSystem->Getenv("VMCWORKDIR");
TString medFile = geoPath + "/geometry/media.geo";
geoFace->setMediaFile(medFile);
geoFace->readMedia();
TGeoManager* gGeoMan = gGeoManager;
// --------------------------------------------------------------------------
// ----------------- Get and create the required media -----------------
FairGeoMedia* geoMedia = geoFace->getMedia();
FairGeoBuilder* geoBuild = geoLoad->getGeoBuilder();
// ---> pipe medium
FairGeoMedium* fPipeMedium = geoMedia->getMedium(pipeMediumName.Data());
TString fairError = "FairMedium " + pipeMediumName + " not found";
if (!fPipeMedium) Fatal("Main", fairError.Data());
geoBuild->createMedium(fPipeMedium);
TGeoMedium* pipeMedium = gGeoMan->GetMedium(pipeMediumName.Data());
TString geoError = "Medium " + pipeMediumName + " not found";
if (!pipeMedium) Fatal("Main", geoError.Data());
// // ---> iron
// FairGeoMedium* mIron = geoMedia->getMedium("iron");
// if ( ! mIron ) Fatal("Main", "FairMedium iron not found");
// geoBuild->createMedium(mIron);
// TGeoMedium* iron = gGeoMan->GetMedium("iron");
// if ( ! iron ) Fatal("Main", "Medium iron not found");
// // ---> lead
// FairGeoMedium* mLead = geoMedia->getMedium("lead");
// if ( ! mLead ) Fatal("Main", "FairMedium lead not found");
// geoBuild->createMedium(mLead);
// TGeoMedium* lead = gGeoMan->GetMedium("lead");
// if ( ! lead ) Fatal("Main", "Medium lead not found");
// ---> vacuum
FairGeoMedium* mVacuum = geoMedia->getMedium("vacuum");
if (!mVacuum) Fatal("Main", "FairMedium vacuum not found");
geoBuild->createMedium(mVacuum);
TGeoMedium* vacuum = gGeoMan->GetMedium("vacuum");
if (!vacuum) Fatal("Main", "Medium vacuum not found");
// --------------------------------------------------------------------------
// -------------- Create geometry and top volume -------------------------
gGeoMan = (TGeoManager*) gROOT->FindObject("FAIRGeom");
gGeoMan->SetName("PIPEgeom");
TGeoVolume* top = new TGeoVolumeAssembly("TOP");
gGeoMan->SetTopVolume(top);
TGeoVolume* pipe = new TGeoVolumeAssembly(pipeName.Data());
// --------------------------------------------------------------------------
// Shifting to center of magnetic coordinate system
TGeoMatrix* shift = new TGeoTranslation(0, 0, -40);
top->AddNode(pipe, 0, shift);
// ----- Create sections -------------------------------------------------
infoFile << endl << "Beam pipe section: " << pipe1name << endl;
infoFile << setw(2) << "i" << setw(10) << "Z,mm" << setw(10) << "Rin,mm" << setw(10) << "Rout,mm" << setw(10)
<< "h,mm" << endl;
TGeoVolume* pipe1 = MakePipe(1, nSects1, z1, rin1, rout1, pipeMedium, &infoFile);
pipe1->SetLineColor(kGray);
pipe->AddNode(pipe1, 0);
infoFile << endl << "Beam pipe section: " << pipe2name << endl;
infoFile << setw(2) << "i" << setw(10) << "Z,mm" << setw(10) << "Rin,mm" << setw(10) << "Rout,mm" << setw(10)
<< "h,mm" << endl;
TGeoVolume* pipe2 = MakePipe(2, nSects2, z2, rin2, rout2, pipeMedium, &infoFile);
pipe2->SetLineColor(kBlue);
pipe->AddNode(pipe2, 0);
TGeoVolume* pipevac1 = MakeVacuum(1, nSects01, z01, rin01, rout01, vacuum, &infoFile);
pipevac1->SetLineColor(kCyan);
pipe->AddNode(pipevac1, 0);
infoFile << endl << "Beam pipe section: " << pipe3name << endl;
infoFile << setw(2) << "i" << setw(10) << "Z,mm" << setw(10) << "Rin,mm" << setw(10) << "Rout,mm" << setw(10)
<< "h,mm" << endl;
TGeoVolume* pipe3 = MakePipe(3, nSects3, z3, rin3, rout3, pipeMedium, &infoFile);
pipe3->SetLineColor(kGreen);
pipe->AddNode(pipe3, 0);
TGeoVolume* pipevac3 = MakeVacuum(3, nSects03, z03, rin03, rout03, vacuum, &infoFile);
pipevac3->SetLineColor(kCyan);
pipe->AddNode(pipevac3, 0);
infoFile << endl << "Beam pipe section: " << pipe4name << endl;
infoFile << setw(2) << "i" << setw(10) << "Z,mm" << setw(10) << "Rin,mm" << setw(10) << "Rout,mm" << setw(10)
<< "h,mm" << endl;
TGeoVolume* pipe4 = MakePipe(4, nSects4, z4, rin4, rout4, pipeMedium, &infoFile);
pipe4->SetLineColor(kGreen);
pipe->AddNode(pipe4, 0);
TGeoVolume* pipevac4 = MakeVacuum(4, nSects04, z04, rin04, rout04, vacuum, &infoFile);
pipevac4->SetLineColor(kCyan);
pipe->AddNode(pipevac4, 0);
/*
infoFile << endl << "Beam pipe section: " << pipe5name << endl;
infoFile << setw(2) << "i" << setw(10) << "Z,mm" << setw(10) << "Rin,mm" << setw(10) << "Rout,mm" << setw(10) << "h,mm" << endl;
TGeoVolume* pipe5 = MakePipe (5, nSects5, z5, rin5, rout5, pipeMedium, &infoFile);
pipe5->SetLineColor(kGreen);
pipe->AddNode(pipe5, 0);
TGeoVolume* pipevac5 = MakeVacuum(5, nSects05, z05, rin05, rout05, vacuum, &infoFile);
pipevac5->SetLineColor(kCyan);
pipe->AddNode(pipevac5, 0);
*/
// ----- End --------------------------------------------------
// --------------- Finish -----------------------------------------------
top->AddNode(pipe, 1);
cout << endl << endl;
gGeoMan->CloseGeometry();
gGeoMan->CheckOverlaps(0.0001);
gGeoMan->PrintOverlaps();
gGeoMan->Test();
// visualize it with ray tracing, OGL/X3D viewer
//top->Raytrace();
// top->Draw("ogl");
//top->Draw("x3d");
TFile* rootFile = new TFile(rootFileName, "RECREATE");
top->Write();
cout << endl;
cout << "Geometry " << top->GetName() << " written to " << rootFileName << endl;
rootFile->Close();
infoFile.close();
}
// ============================================================================
// ====== End of main function =====
// ============================================================================
// ===== Make the beam pipe volume =========================================
TGeoPcon* MakeShape(Int_t nSects, char* name, Double_t* z, Double_t* rin, Double_t* rout, fstream* infoFile)
{
// ---> Shape
TGeoPcon* shape = new TGeoPcon(name, 0., 360., nSects);
for (Int_t iSect = 0; iSect < nSects; iSect++) {
shape->DefineSection(iSect, z[iSect] / 10., rin[iSect] / 10., rout[iSect] / 10.); // mm->cm
*infoFile << setw(2) << iSect + 1 << setw(10) << fixed << setprecision(2) << z[iSect] << setw(10) << fixed
<< setprecision(2) << rin[iSect] << setw(10) << fixed << setprecision(2) << rout[iSect] << setw(10)
<< fixed << setprecision(2) << rout[iSect] - rin[iSect] << endl;
}
return shape;
}
// ============================================================================
// ===== Make the beam pipe volume =========================================
TGeoVolume* MakePipe(Int_t iPart, Int_t nSects, Double_t* z, Double_t* rin, Double_t* rout, TGeoMedium* medium,
fstream* infoFile)
{
// ---> Shape
TString volName = Form("pipe%i", iPart);
TGeoPcon* shape = new TGeoPcon(volName.Data(), 0., 360., nSects);
for (Int_t iSect = 0; iSect < nSects; iSect++) {
shape->DefineSection(iSect, z[iSect] / 10., rin[iSect] / 10., rout[iSect] / 10.); // mm->cm
*infoFile << setw(2) << iSect + 1 << setw(10) << fixed << setprecision(2) << z[iSect] << setw(10) << fixed
<< setprecision(2) << rin[iSect] << setw(10) << fixed << setprecision(2) << rout[iSect] << setw(10)
<< fixed << setprecision(2) << rout[iSect] - rin[iSect] << endl;
}
// ---> Volume
TGeoVolume* pipe = new TGeoVolume(volName.Data(), shape, medium);
return pipe;
}
// ============================================================================
// ===== Make the volume for the vacuum inside the beam pipe ==============
TGeoVolume* MakeVacuum(Int_t iPart, Int_t nSects, Double_t* z, Double_t* rin, Double_t* rout, TGeoMedium* medium,
fstream* infoFile)
{
// ---> Shape
TString volName = Form("pipevac%i", iPart);
TGeoPcon* shape = new TGeoPcon(volName.Data(), 0., 360., nSects);
for (Int_t iSect = 0; iSect < nSects; iSect++) {
shape->DefineSection(iSect, z[iSect] / 10., rin[iSect] / 10., rout[iSect] / 10.); // mm->cm
}
// ---> Volume
TGeoVolume* pipevac = new TGeoVolume(volName.Data(), shape, medium);
return pipevac;
}
// ============================================================================
This diff is collapsed.
......@@ -39,7 +39,7 @@ TGeoVolume* ConstructShield(const char* name, Double_t sizeXY, Double_t holesize
void create_psdgeo_with_hole()
{
TString geoTag = "v20b"; // Geometry tag
TString geoTag = "v20c"; // Geometry tag
// ----- Steering variables ---------------------------------------------
Double_t psdX; // x position (cm) of PSD in cave (front plane center)
......@@ -48,7 +48,14 @@ void create_psdgeo_with_hole()
Double_t psdRotY; // Rotation of PSD around y axis (rad)
Double_t holeSize; // side length of the square shaped hole (cm)
if (geoTag == "v20a") {
if (geoTag == "v20c") {
psdX = 12.95;
psdY = 0.;
psdZ = 1010;
psdRotY = 0.0132;
holeSize = 20.;
}
else if (geoTag == "v20a") {
psdX = 12.95;
psdY = 0.;
psdZ = 1050;
......
......@@ -36,10 +36,15 @@ math(EXPR nBeam "${nEvents} * 3")
# ===== Define the different setups to be tested with ====================
if(NOT ${CBM_TEST_MODEL} MATCHES Experimental )
List(APPEND cbm_setup sis100_hadron sis100_electron sis100_muon_lmvm
sis100_muon_jpsi sis300_electron)
List(APPEND cbm_setup
sis100_hadron_APR21 sis100_electron_APR21
sis100_muon_lmvm_APR21 sis100_muon_jpsi_APR21
sis300_electron
sis100_hadron sis100_electron
sis100_hadron_DEC21 sis100_electron_DEC21
)
else()
List(APPEND cbm_setup sis100_electron sis100_muon_jpsi)
List(APPEND cbm_setup sis100_electron_APR21 sis100_muon_jpsi_APR21)
endif()
# ============================================================================
......@@ -171,7 +176,7 @@ foreach(setup IN LISTS cbm_setup)
# --- Event-by-event reconstruction from event-based simulation
# --- Ideal raw event builder
set(testname run_${sname}_reco_ev_ideal)
add_test(${testname} ${MACRODIR}/run_reco.sh
add_test(${testname} ${MACRODIR}/run_reco.sh
\"data/${sname}_ev\" -1 0 \"data/${sname}_eb_eb_ideal\" \"Ideal\" \"${setup}\" \"data/${sname}_coll\")
set_tests_properties(${testname} PROPERTIES
TIMEOUT ${timeOutTime}
......
......@@ -390,6 +390,7 @@ void run_reco(TString input = "", Int_t nTimeSlices = -1, Int_t firstTimeSlice =
std::cout << "Using material budget file " << parFile << std::endl;
l1->SetStsMaterialBudgetFileName(parFile.Data());
}
run->AddTask(l1);
std::cout << "-I- " << myName << ": Added task " << l1->GetName() << std::endl;
......
......@@ -137,13 +137,25 @@ void run_tra_beam(Int_t nEvents = 1, const char* species = "Au", Double_t beamP
Double_t beamSigmaTy = 0.001; // Gaussian sigma of beam x-y angle [rad]
// ------------------------------------------------------------------------
// ----- Target properties -----------------------------------------------
Double_t targetZpos = -40.0;
// The target position is at z=0 for the old coordinate system but is intended
// to be moved to -4cm in the DEC21 release. The global coordinate system will
// also shift from the old target position to the center of the magnet which
// is a net displacement of -40 cm. In terms of the new coordainte system
// the target is therefore to be at -44 cm. In order not to cause forgetting
// we will automate the shifting process for a short time, until the full move
// has been completed.
if (strstr(setup, "_APR21")) targetZpos = 0.0;
if (strstr(setup, "_DEC21")) targetZpos = -44.0;
std::cout << "Target is at " << targetZpos << "cm from origin" << std::endl;
// ------------------------------------------------------------------------
// ----- Timer --------------------------------------------------------
TStopwatch timer;
timer.Start();
// ------------------------------------------------------------------------
// --- Transport run ----------------------------------------------------
CbmTransport run;
run.SetEngine(engine);
......@@ -151,7 +163,7 @@ void run_tra_beam(Int_t nEvents = 1, const char* species = "Au", Double_t beamP
run.SetParFileName(parFile);
run.SetGeoFileName(geoFile);
run.LoadSetup(setup);
run.SetTarget("Gold", 0.025, 2.5);
run.SetTarget("Gold", 0.025, 2.5, 0, 0, targetZpos);
run.SetBeamPosition(beamMeanX, beamMeanY, beamSigmaX, beamSigmaY, beamFocusZ);
run.SetBeamAngle(beamMeanTx, beamMeanTy, beamSigmaTx, beamSigmaTy);
run.AddInput(new CbmBeamGenerator(beamZ, beamA, beamQ, beamP, beamStartZ));
......
......@@ -103,11 +103,24 @@ void run_tra_file(const char* input = "", Int_t nEvents = 1, const char* output
// For flexibility, the target volume is not part of the predefined
// geometry setup. It thus has to be specified in this macro. By default,
// a Gold target of 250 micrometer thickness and 2.5 cm diameter is used.
// The target shifts by 4 cm upstream by decision of the technical board
// in Apr 2020 which is 40 cm from center of magnet.
const char* targetMedium = "Gold";
Double_t targetThickness = 0.025; // in cm
Double_t targetDiameter = 2.5; // in cm
// ------------------------------------------------------------------------
Double_t targetZpos = -40.0;
// The target position is at z=0 for the old coordinate system but is intended
// to be moved to -4cm in the DEC21 release. The global coordinate system will
// also shift from the old target position to the center of the magnet which
// is a net displacement of -40 cm. In terms of the new coordainte system
// the target is therefore to be at -44 cm. In order not to cause forgetting
// we will automate the shifting process for a short time, until the full move
// has been completed.
if (strstr(setup, "_APR21")) targetZpos = 0.0;
if (strstr(setup, "_DEC21")) targetZpos = -44.0;
std::cout << "Target is at " << targetZpos << "cm from origin" << std::endl;
// ------------------------------------------------------------------------
// ----- Beam properties ----------------------------------------------
// The beam particles themselves are not subject to the transport,
......@@ -149,7 +162,7 @@ void run_tra_file(const char* input = "", Int_t nEvents = 1, const char* output
run.SetParFileName(parFile);
run.SetGeoFileName(geoFile);
run.LoadSetup(setup);
run.SetTarget(targetMedium, targetThickness, targetDiameter);
run.SetTarget(targetMedium, targetThickness, targetDiameter, 0, 0, targetZpos);
run.SetBeamPosition(beamPosX, beamPosY, beamSigmaX, beamSigmaY);
if (rotateEvents) run.SetRandomEventPlane();
run.SetRandomSeed(randomSeed);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -269,6 +269,8 @@ Install(FILES CbmL1Counters.h
L1Algo/L1MaterialInfo.h
L1Algo/L1UMeasurementInfo.h
L1Algo/L1XYMeasurementInfo.h
L1Algo/L1BaseStationInfo.h
L1Algo/L1Parameters.h
vectors/vec_arithmetic.h
vectors/std_alloc.h
DESTINATION include
......
......@@ -752,6 +752,7 @@ InitStatus CbmL1::Init()
LOG(error) << "-E- CbmL1: Read geometry from file " << fSTAPDataDir + "geo_algo.txt was NOT successful.";
}
algo->SetL1Parameters(fL1Parameters);
algo->Init(geo, fUseHitErrors, fTrackingMode, fMissingHits);
geo.clear();
......@@ -1622,12 +1623,13 @@ void CbmL1::WriteSTAPAlgoData() // must be called after ReadEvent
// write StsHitsStartIndex and StsHitsStopIndex
n = 20;
for (int i = 0; i < n; i++) {
if (int(algo->fkMaxNstations) + 1 > i) fadata << algo->StsHitsStartIndex[i] << endl;
else
if (int(L1Parameters::kMaxNstations) + 1 > i) { fadata << algo->StsHitsStartIndex[i] << endl; }
else {
fadata << 0 << endl;
}
};
for (int i = 0; i < n; i++) {
if (int(algo->fkMaxNstations) + 1 > i) fadata << algo->StsHitsStopIndex[i] << endl;
if (int(L1Parameters::kMaxNstations) + 1 > i) fadata << algo->StsHitsStopIndex[i] << endl;
else
fadata << 0 << endl;
};
......@@ -1878,16 +1880,16 @@ void CbmL1::ReadSTAPAlgoData()
<< " have been read." << endl;
}
// read StsHitsStartIndex and StsHitsStopIndex
n = 20;
n = 20; // TODO: Why 20?
for (int i = 0; i < n; i++) {
int tmp;
fadata >> tmp;
if (int(algo->fkMaxNstations) + 1 > i) (const_cast<unsigned int&>(algo->StsHitsStartIndex[i]) = tmp);
if (int(L1Parameters::kMaxNstations) + 1 > i) (const_cast<unsigned int&>(algo->StsHitsStartIndex[i]) = tmp);
}
for (int i = 0; i < n; i++) {
int tmp;
fadata >> tmp;
if (int(algo->fkMaxNstations) + 1 > i) (const_cast<unsigned int&>(algo->StsHitsStopIndex[i]) = tmp);
if (int(L1Parameters::kMaxNstations) + 1 > i) (const_cast<unsigned int&>(algo->StsHitsStopIndex[i]) = tmp);
}
cout << "-I- CbmL1: CATrackFinder data for event " << nEvent << " has been read from file " << fadata_name
......