# Introduction

This is the analysis package for the SOLARIS DAQ. It is supposed to be the analysis path for the SOLARIS DAQ. 

The folder struture is

Analysis  
├── README.md  
├── SetupNewExp // bash script to create new branch and raw data folder  
├── SOLARIS.sh // bash script to define some env variable and functions  
├── Armory // analysis codes, independent from experiment.  
├── Cleopatra // Swaper for DWBA code Ptolomey and simulation  
├── data_raw // should be the symbolic link to the raw data, created by SetUpNewExp  
├── 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 <number_of_threads>
```

# Analysis & Simulation

The Armory/AnalysisLib.h constains many small but handy functions.

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, 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. 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, **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

Simply run
```sh
>SimTransfer
```

it will digest the detectorGeo.txt, reactionConfig.txt, if DWBA.root exist, find the reactions. 

* 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.


