From 1c140d07fce79862f11cb7b44f7f8c6791f226f7 Mon Sep 17 00:00:00 2001 From: "Ryan@Home" Date: Thu, 4 Jul 2024 22:39:02 -0400 Subject: [PATCH] SimTransfer: add AllExList and ExID_ReactID_List in output root --- .vscode/settings.json | 139 ++-------------------------------------- Cleopatra/SimTransfer.C | 19 +++++- Cleopatra/makefile | 2 +- README.md | 48 +++++++++++--- 4 files changed, 62 insertions(+), 146 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index b7ef48d..7647045 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,139 +1,12 @@ { "files.associations": { - "script.C": "cpp", - "SOLARIS_Qt6_DAQ.pro": "makefile", - "qlineseries": "cpp", - "cctype": "cpp", - "clocale": "cpp", - "cmath": "cpp", - "cstdarg": "cpp", - "cstddef": "cpp", - "cstdio": "cpp", - "cstdlib": "cpp", - "cstring": "cpp", - "ctime": "cpp", - "cwchar": "cpp", - "cwctype": "cpp", - "array": "cpp", - "atomic": "cpp", - "bit": "cpp", - "*.tcc": "cpp", - "chrono": "cpp", - "codecvt": "cpp", - "compare": "cpp", - "concepts": "cpp", - "condition_variable": "cpp", - "cstdint": "cpp", - "deque": "cpp", - "list": "cpp", - "map": "cpp", - "string": "cpp", - "unordered_map": "cpp", - "unordered_set": "cpp", - "vector": "cpp", - "exception": "cpp", - "algorithm": "cpp", - "functional": "cpp", - "iterator": "cpp", - "memory": "cpp", - "memory_resource": "cpp", - "numeric": "cpp", - "optional": "cpp", - "random": "cpp", - "ratio": "cpp", - "string_view": "cpp", - "system_error": "cpp", - "tuple": "cpp", - "type_traits": "cpp", - "utility": "cpp", - "future": "cpp", - "initializer_list": "cpp", - "iomanip": "cpp", - "iosfwd": "cpp", - "iostream": "cpp", - "istream": "cpp", - "limits": "cpp", - "mutex": "cpp", - "new": "cpp", - "numbers": "cpp", - "ostream": "cpp", - "semaphore": "cpp", - "span": "cpp", - "sstream": "cpp", - "stdexcept": "cpp", - "stop_token": "cpp", - "streambuf": "cpp", - "thread": "cpp", - "cinttypes": "cpp", - "typeinfo": "cpp", - "variant": "cpp", - "qdatetime": "cpp", - "fstream": "cpp", - "allocator": "cpp", - "qsignalmapper": "cpp", - "GeneralSort.C": "cpp", - "ChainMonitors.C": "cpp", - "GeneralSortAgent.C": "cpp", - "readRawTrace.C": "cpp", - "readTrace.C": "cpp", - "Cleopatra.C": "cpp", - "alpha.C": "cpp", - "DWBA_compare.C": "cpp", - "DWBARatio.C": "cpp", - "ExtractXSec.C": "cpp", - "ExtractXSecFromText.C": "cpp", - "FindThetaCM.C": "cpp", - "InFileCreator.C": "cpp", - "IsotopeShort.C": "cpp", - "knockout.C": "cpp", - "PlotSimulation.C": "cpp", - "PlotTGraphTObjArray.C": "cpp", - "transfer_test.C": "cpp", - "Transfer.C": "cpp", - "Simulation_Helper.C": "cpp", - "Check_Simulation.C": "cpp", - "AutoFit.C": "cpp", - "__hash_table": "cpp", - "__split_buffer": "cpp", - "__tree": "cpp", - "bitset": "cpp", - "stack": "cpp", - "Monitor.C": "cpp", - "DataHoSei.C": "cpp", - "Monitors.C": "cpp", - "__bit_reference": "cpp", - "__bits": "cpp", - "__config": "cpp", - "__debug": "cpp", - "__errc": "cpp", - "__locale": "cpp", - "__mutex_base": "cpp", - "__node_handle": "cpp", - "__nullptr": "cpp", - "__string": "cpp", - "__threading_support": "cpp", - "__tuple": "cpp", - "complex": "cpp", - "forward_list": "cpp", - "ios": "cpp", - "locale": "cpp", - "__verbose_abort": "cpp", - "Monitors_Util.C": "cpp", - "Monitor_Util.C": "cpp", - "script_single.C": "cpp", - "script_multi.C": "cpp", - "Isotope.C": "cpp", - "classisotope.h": "c", - "knockoutSim.C": "cpp", - "test.C": "cpp", - "SimTransfer.C": "cpp", - "httpaccess.C": "cpp", - "httpcontrol.C": "cpp", - "SimTransfer2.C": "cpp", - "haha.C": "cpp", - "SimTransfer_2.C": "cpp" + "detectorGeo.txt": "shellscript", + "reactionConfig.txt": "shellscript", + "DWBA": "shellscript", + "*.C": "cpp" }, - + + "C_Cpp.autoAddFileAssociations": false, "better-comments.multilineComments": true, "better-comments.tags" : [ { diff --git a/Cleopatra/SimTransfer.C b/Cleopatra/SimTransfer.C index 43be0aa..6c0cabe 100644 --- a/Cleopatra/SimTransfer.C +++ b/Cleopatra/SimTransfer.C @@ -97,6 +97,7 @@ void Transfer( TMacro dwbaReactList_Used; bool useDWBA[numTransfer]; + for( int i = 0; i < numTransfer; i++ ) useDWBA[i] = false; if( distFile->IsOpen() ) { printf("\e[32m#################################### Load DWBA input : %s \e[0m\n", ptolemyRoot.Data()); @@ -182,7 +183,21 @@ void Transfer( dwbaReactList_Used.Write("DWBA_ReactionList", 1); } - + TMacro allExList; + allExList.AddLine("#---Ex relative_xsec SF sigma_in_MeV"); + TMacro exIDReactIDList; //list of all ex and corresponding Reaction ID + exIDReactIDList.AddLine("#-- ExID ReactionID"); + for( int i = 0; i < numTransfer; i++){ + std::vector tempExList = transfer[i].GetExList()->ExList; + for( size_t j = 0; j < tempExList.size(); j++){ + allExList.AddLine(Form("%9.5f %9.5f %3.1f %5.3f", tempExList[j].Ex, tempExList[j].xsec, tempExList[j].SF, tempExList[j].sigma)); + exIDReactIDList.AddLine(Form("%ld %d", j, i)); + } + } + + allExList.Write("AllExList"); + exIDReactIDList.Write("ExID_ReactID_List"); + TMacro hitMeaning; hitMeaning.AddLine("======================= meaning of Hit\n"); for( int code = -15 ; code <= 1; code ++ ){ @@ -372,7 +387,7 @@ void Transfer( delete [] gx; delete gList; - //--- cal modified f + //--- cal E-Z curve with finite detector correction int numEx = 0; for( int i = 0; i < numTransfer; i++){ if( !listOfTransfer[i] ) continue; diff --git a/Cleopatra/makefile b/Cleopatra/makefile index 82e4473..70b796d 100644 --- a/Cleopatra/makefile +++ b/Cleopatra/makefile @@ -3,7 +3,7 @@ CFLAG = -O2 depend = ClassTransfer.h ClassHelios.h ClassIsotope.h ClassDecay.h constant.h potentials.h -ALL = Isotope InFileCreator ExtractXSec ExtractXSecFromText PlotTGraphTObjArray Cleopatra FindThetaCM SimTransfer SimTransfer_single SimAlpha +ALL = Isotope InFileCreator ExtractXSec ExtractXSecFromText PlotTGraphTObjArray Cleopatra FindThetaCM SimTransfer SimAlpha all: $(ALL) diff --git a/README.md b/README.md index 29110fc..952ecbc 100644 --- a/README.md +++ b/README.md @@ -14,10 +14,36 @@ Analysis ├── root_data // symbolic link to converted root file, created by SetUpNewExp └── working // working directory, depends on experiment. +# SOLARIS.sh + +this batch shell script adds few enviroment variables and functions. Add the Armory and Cleopatra into the system PATH. + +```sh +>source SOLARIS.sh +``` + +# Event Builder + +Please download the SOLARIS_DAQ, under the Aux directory, make, and link the EventBuilder to Armory. + +The reason for having EventBuilder in the DAQ code is the Hit.h is original from the DAQ code. + # ROOT issue We are still using TProof for parallel calculation. TProof is not pre-compiled since 6.32+. And 6.30 only precompiled for Ubuntu 22.04. So, for system using Ubuntu 24.04, user must precompiled to root in order to work. +## Compilation + +We can manual download the git repository of the root following the instruction. in the cmake + +```sh +root_install="/opt/root_v6.32.00_compiled" +root_src="root_src" +root_build="root_build" +cmake -DCMAKE_INSTALL_PREFIX=$root_install $root_src -Dproof=ON -Dmathmore=ON +sudo cmake --build . --target install -j +``` + # Analysis & Simulation The Armory/AnalysisLib.h constains many small but handy functions. @@ -26,28 +52,30 @@ All class headers are started with Class*.h The classes **DetGeo**** and **ReactionConfig** are fundamental for loading the detectorGeo.txt and reactionConfig.txt. -Both txt file support empty lines, and up to 2 settings. The reason for that is for dual-array configuration. It has potentail to extend and include more settings. But it is two now, one for upstream array (reaction) and downstream array (reaction). +Both txt file support empty lines, can have multiple settings. The reason for that is for many-array configuration. -The **TransferReaction** class is only use one of the reaction from the reactionConfig.txt. +The **TransferReaction** class is only use one of the reaction from the reactionConfig.txt. This class generates the TLorentzVector for ligh and heavy recoils. ```C++ TransferReaction::SetReactionFromFile("reactionConfig.txt", ID); // ID = 0 or 1 ``` -Same for the **Helios** class +Same for the **Helios** class, **Helios** class use the detectorGeo.txt. It takes TLorentzVector and calculate does it be detected by the array or recoil detector. ```C++ HELIOS::SetDetectorGeometry("detectorGeo.txt", ID); // ID = 0 or 1 ``` +## Simulation -# Event Builder +Simply run +```sh +>SimTransfer +``` -The EventBuilder is at the armory. It depends on the Hit.h and SolReader.h. +it will digest the detectorGeo.txt, reactionConfig.txt, if DWBA.root exist, find the reactions. -## Hit.h +* it does not have TargetScattering (yet) +* for multiple reactions, it will randomly use any and disregard the total Xsec of different reactions. The Xsec only takes effect within same reaction. +* the decay of heavy recoil only have isotropic decay. -The Hit class stores a hit (or a data block) -## SolReader.h - -The SolReader class read the sol file. It can be loaded in CERN ROOT alone.