2.4 KiB
2.4 KiB
ANASEN Monte Carlo (anasenMS.cpp)
Overview
anasenMS.cpp is a standalone Monte Carlo simulation for an ANASEN-style detector setup. It generates transfer reaction kinematics, propagates products to a wire chamber (PW) and a silicon array (SX3), reconstructs tracks, and writes output to a ROOT tree.
Requirements
- ROOT (e.g.
root-configfor compile flags) - C++ compiler (gcc/g++)
- Project includes:
ClassTransfer.h,ClassAnasen.h, plus their dependent implementation files.
Build
In Armory directory:
g++ -O2 -o anasenMS anasenMS.cpp ClassTransfer.cpp ClassAnasen.cpp ... `root-config --cflags --libs`
(Adjust source file list based on actual project layout.)
Run
./anasenMS [numEvents]
numEvents: optional integer, default1000000- Outputs:
SimAnasen1.rootcontainingtree
What the code does
- Initializes reaction:
TransferReaction transferSetA(24,12,0)targetSetIncidentEnergyAngle(10,0,0)beam energy and directionSeta,Setbreaction fragment indices
- Sets excitation lists:
ExAList,ExList - Vertex and resolution settings:
vertexX/Y/ZrangessigmaSX3_W,sigmaSX3_L,sigmaPW_A,sigmaPW_C
- Loads energy loss tables from
../ELoss/usingTGraphfor interpolation - Prepares ROOT output tree and branches for truth/reconstructed
- Loop over events:
- Sample excitation and CM direction
transfer.Event(thetaCM, phiCM)outputsTLorentzVectorproducts- Compute lab angles/energies
- Random vertex inside target volume
- Run detector response:
pw->FindWireID(...)sx3->FindSX3Pos(...)
- Read out wire hits and SX3 channel + depth
- Apply position smearing for SX3
- Apply energy loss to light particle using interpolated dE/dx from table, based on path length from vertex to hit
- Reconstruct track via
pw->CalTrackandpw->CalTrack2 - Fill ROOT tree
- At end: write tree, close file, clean up
Notes
- The code now has expanded inline comments explaining each stage.
- Important methods are from:
ClassTransfer(SetA,SetIncidentEnergyAngle,Seta,Setb,SetExA,SetExB,CalReactionConstant,Event)ClassAnasen/SX3/PW(FindWireID,FindSX3Pos,GetHitInfo,CalTrack,CalTrack2,GetTrackTheta,GetTrackPhi,GetZ0,GetHitPosWithSigma,GetID, etc.)
- Optional: change excitation lists, vertex spread, and sigma values to mimic different beam/target conditions.