Pulse shape analysis - ATTPC/ATTPCROOTv2 GitHub Wiki

Pulse Shape Analysis Task

The pulse shape analysis (PSA) task is responsible for taking the traces in an AtRawEvent and producing hits (AtHit) in 3D space in the detector volume. A hit is defined by its location and charge. These hits are then saved in an AtEvent. By default the branch used as the input is "AtRawEvent", and the output branch is "AtEventH", but this can be changed at runtime. You may want to do this if you are trying out different filtering methods using the AtFilterTask.

The behavior of the PSA task is defined by an instance of a class that extends the interface AtPSA. This interface requires the virtual function Analyze(AtRawEvent *input, AtEvent *output) to be defined.

Using AtPSAtask

First a unique pointer of any time inheriting the interface AtPSA must be created, and any relevant parameters set. Then it has to be passed to the task. Any task-level parameters should be set and the task added to the run.

For example to use a max finding PSA and filtered data:

auto psa = std::make_unique<AtPSAMax>(); //Create an instance of the desired PSA method
psa->SetThreshold(45); //Set any relevant parameters

AtPSAtask *psaTask = new AtPSAtask(std::move(psa)); //Create the PSA task
psaTask->SetPersistence(true); //Set any task-level parameters
psaTask->SetInputBranch("AtRawEventFiltered");

run->AddTask(psaTask); //Add the task to the analysis run

Implemented PSA methods

AtPSASimple

AtPSASimple2

AtPSAFilter

AtPSAProto

AtPSAProtoFull

AtPSAFull

⚠️ **GitHub.com Fallback** ⚠️