CbmRoot
Loading...
Searching...
No Matches
CbmStsTimeCal Class Reference

Task for time calibration of STS hits. More...

#include <CbmStsTimeCal.h>

Inheritance diagram for CbmStsTimeCal:
[legend]
Collaboration diagram for CbmStsTimeCal:
[legend]

Public Member Functions

 CbmStsTimeCal ()=default
 
 ~CbmStsTimeCal ()=default
 
 CbmStsTimeCal (ECbmModuleId system, double lower_lim=-60, double upper_lim=+60)
 Parameterized constructor.
 
 CbmStsTimeCal (int run_id, ECbmModuleId system, double lower_lim, double upper_lim)
 Parameterized constructor.
 
void SetWalkFile (std::string par_file)
 Set parameter file used during unpacking.
 
InitStatus Init ()
 
void Exec (Option_t *)
 
void Finish ()
 
void SetCutMap (CbmCutMap *map)
 Set the cut map for analysis.
 
void UserAlignment (const std::map< int32_t, std::vector< double > > &user_mat)
 User defined sensor translations.
 

Protected Member Functions

void LoadSetup ()
 Load the STS setup and fill the map with XYZ boundaries for each STS setup element. It maps the first z strip for each module depending on the size of the sensor.
 
void SaveToFile ()
 It write all mapped objects to the FairRunAna sink file.
 
 ClassDef (CbmStsAnaBase, 1)
 

Protected Attributes

uint entry_ {0}
 
std::unique_ptr< TFile > fReportFile
 
std::unordered_set< int32_t > fAddressBook
 
std::map< std::string, std::unique_ptr< TGraphErrors > > fG1D
 
std::map< std::string, std::unique_ptr< TH1D > > fH1D
 
std::map< std::string, std::unique_ptr< TH2D > > fH2D
 
std::map< std::string, std::shared_ptr< TH2D > > fH2DShared
 
std::map< std::string, std::unique_ptr< TCanvas > > fCanvas
 
int nb_sts_station_ {8}
 
std::unordered_map< int32_t, std::vector< double > > fStsGeoInfo
 
std::map< int32_t, std::vector< double > > fUserAlignment
 
std::unordered_map< int32_t, int > fFirstZStrip
 
CbmCutMapfAnalysisCuts {nullptr}
 
int fRunId {-1}
 

Private Member Functions

void BookHistograms (int32_t address)
 Book histograms.
 
void CheckTimeWalk ()
 Extract Time Walk parameters.
 
double FindModuleOffset (int32_t)
 Extract Time general offset for a given module.
 
double FindGlobalOffset ()
 Find a common offset for STS setup. It is taken as the average of the time offset for ADC > 25 for the setup module with the narrower dt distribution.
 
template<class Digi>
void CheckTiming ()
 Check timing for a specific digi type It fills StsDigi time difference respect to fRefSystem Digis histograms.
 
void InitTimeWalkMap (int32_t address)
 Initialized the Time Walk map.
 
void LoadWalkFromFile ()
 Load the time calibration parameters from user define file.
 
void WriteYAML ()
 Write parameters file in YAML format.
 
void DrawResults ()
 Virtual function to draw analysis results.
 
 ClassDef (CbmStsTimeCal, 1)
 

Private Attributes

double fGlobalTimeOffset {0}
 
double fTimeWindowMin {-60}
 
double fTimeWindowMax {+60}
 
const double kStsClock {3.125}
 
std::string fParFile {""}
 
std::string fOutputPath {""}
 
std::map< int, std::map< int, std::vector< double > > > fWalkMapRaw
 
cbm::algo::sts::WalkMap fWalkMap
 
std::unique_ptr< TFile > fReportOffset
 
std::unique_ptr< TFile > fReportFit
 
ECbmModuleId fRefSystem {ECbmModuleId::kBmon}
 
CbmDigiManagerfDigiManager {nullptr}
 
TClonesArray * fCbmEvtArray {nullptr}
 

Detailed Description

Task for time calibration of STS hits.

STS Digi-level time calibration task for ASIC and ADC synchronization.

This class inherits from FairTask and CbmStsAnaBase. It provides functionality for calibrating the time of STS hits.

This class derives from FairTask and CbmStsAnaBase, and performs time calibration of the STS (Silicon Tracking System) by determining precise time offsets for each ASIC and ADC. The calibration removes time walk effects to improve timing accuracy.

Key features:

  • Time Offset Calculation: Individual time offset values are found from the time difference distribution t_StsDigi - t_RefDigi (whole combinatoric inside search window).
    1. Pre-determination of the time offset is obtained as the mean value of the time correlatiion peak for a given module
    2. Further refining is attempted by fitting the time difference distribution with a N(dt,mu, sigma) + P_2(dt, p0,p1,p2).
    3. ASIC ADC granularity is attemped. If failed, module offset is used.
  • Reference Detector Selection: A reference detector system can be specified. By default, the BMon (Beam Monitor) system is used.
  • Reporting and Diagnostics: Generates a set of reporting histograms that illustrate the timing distribution and calibration results.
  • Organized Output by Run ID: When a run ID is provided, all output files (e.g., parameters, histograms, reports) are stored in a dedicated folder named after the run ID, ensuring organized data handling.
  • Output File Generation: The task generates a YAML parameter file containing the individual time offset for each ASIC ADC.
  • Using pre-existing time calibration: Pre-existing YAML parameter files should be provided IF THE INPUT DATA WAS UNPACKED using such file.
  • Time windows: The time window for the calibration can be set using the lower and upper limits.
    • Very large windows can slow down the code due to high combinatorics.
    • To smmal windows can lead to biased result. The search windows should not be smaller than 25 ns.

This task is essential for achieving precise timing synchronization across all readout electronics in the STS subsystem.

Definition at line 75 of file CbmStsTimeCal.h.

Constructor & Destructor Documentation

◆ CbmStsTimeCal() [1/3]

CbmStsTimeCal::CbmStsTimeCal ( )
default

Referenced by ClassDef().

◆ ~CbmStsTimeCal()

CbmStsTimeCal::~CbmStsTimeCal ( )
default

◆ CbmStsTimeCal() [2/3]

CbmStsTimeCal::CbmStsTimeCal ( ECbmModuleId system,
double lower_lim = -60,
double upper_lim = +60 )

Parameterized constructor.

Parameters
systemreference detector for time
lower_limlower boundary for time difference between
systemdigis and STS digis (default: -60).
upper_limlower boundary for time difference between
systemdigis and STS digis (default: +60).

Definition at line 35 of file CbmStsTimeCal.cxx.

References fRefSystem, fTimeWindowMax, and fTimeWindowMin.

◆ CbmStsTimeCal() [3/3]

CbmStsTimeCal::CbmStsTimeCal ( int run_id,
ECbmModuleId system,
double lower_lim,
double upper_lim )

Parameterized constructor.

Parameters
systemreference detector for time
lower_limlower boundary for time difference between
systemdigis and STS digis (default: -60).
upper_limlower boundary for time difference between
systemdigis and STS digis (default: +60).

Definition at line 42 of file CbmStsTimeCal.cxx.

References fRefSystem, CbmStsAnaBase::fRunId, fTimeWindowMax, and fTimeWindowMin.

Member Function Documentation

◆ BookHistograms()

void CbmStsTimeCal::BookHistograms ( int32_t address)
private

Book histograms.

Parameters
addressThe module address for which histograms will be booked.

Definition at line 111 of file CbmStsTimeCal.cxx.

References CbmStsAnaBase::fAddressBook, CbmStsAnaBase::fH2D, fRefSystem, fTimeWindowMax, fTimeWindowMin, CbmStsAddress::GetElementId(), kStsClock, kStsLadder, kStsModule, kStsUnit, and cbm::util::ToString().

Referenced by CheckTiming().

◆ CheckTimeWalk()

◆ CheckTiming()

template<class Digi>
void CbmStsTimeCal::CheckTiming ( )
private

Check timing for a specific digi type It fills StsDigi time difference respect to fRefSystem Digis histograms.

Definition at line 160 of file CbmStsTimeCal.cxx.

References BookHistograms(), CbmStsAnaBase::fAddressBook, CbmStsAnaBase::fAnalysisCuts, fDigiManager, CbmStsAnaBase::fH2D, fTimeWindowMax, fTimeWindowMin, CbmStsDigi::GetAddress(), CbmStsDigi::GetChannel(), CbmTofAddress::GetChannelSide(), InitTimeWalkMap(), kBmonDigiSide, and kSts.

Referenced by Exec().

◆ ClassDef() [1/2]

CbmStsAnaBase::ClassDef ( CbmStsAnaBase ,
1  )
protectedinherited

References CbmStsAnaBase().

◆ ClassDef() [2/2]

CbmStsTimeCal::ClassDef ( CbmStsTimeCal ,
1  )
private

References CbmStsTimeCal().

◆ DrawResults()

void CbmStsTimeCal::DrawResults ( )
privatevirtual

Virtual function to draw analysis results.

Reimplemented from CbmStsAnaBase.

Definition at line 574 of file CbmStsTimeCal.cxx.

References CbmStsAnaBase::fAddressBook, CbmStsAnaBase::fG1D, CbmStsAnaBase::fH2D, and CbmStsAnaBase::fReportFile.

Referenced by Finish().

◆ Exec()

void CbmStsTimeCal::Exec ( Option_t * )

Definition at line 148 of file CbmStsTimeCal.cxx.

References CheckTiming(), CbmStsAnaBase::entry_, fRefSystem, kBmon, kRich, and kTof.

◆ FindGlobalOffset()

double CbmStsTimeCal::FindGlobalOffset ( )
private

Find a common offset for STS setup. It is taken as the average of the time offset for ADC > 25 for the setup module with the narrower dt distribution.

Definition at line 474 of file CbmStsTimeCal.cxx.

References CbmStsAnaBase::fAddressBook, and CbmStsAnaBase::fG1D.

◆ FindModuleOffset()

double CbmStsTimeCal::FindModuleOffset ( int32_t address)
private

Extract Time general offset for a given module.

Definition at line 377 of file CbmStsTimeCal.cxx.

References FitStsTime::Draw(), CbmStsAnaBase::fH2D, fReportOffset, FitStsTime::time_offset, and FitStsTime::use_fit_result.

Referenced by CheckTimeWalk().

◆ Finish()

void CbmStsTimeCal::Finish ( )

◆ Init()

◆ InitTimeWalkMap()

void CbmStsTimeCal::InitTimeWalkMap ( int32_t address)
private

Initialized the Time Walk map.

Parameters
addressThe module address for which the initialization is done

Definition at line 80 of file CbmStsTimeCal.cxx.

References fWalkMap, and fWalkMapRaw.

Referenced by CheckTiming().

◆ LoadSetup()

◆ LoadWalkFromFile()

void CbmStsTimeCal::LoadWalkFromFile ( )
private

Load the time calibration parameters from user define file.

Definition at line 99 of file CbmStsTimeCal.cxx.

References fGlobalTimeOffset, fParFile, fWalkMap, and cbm::util::yaml::ReadFromFile().

Referenced by Init().

◆ SaveToFile()

void CbmStsAnaBase::SaveToFile ( )
protectedinherited

◆ SetCutMap()

void CbmStsAnaBase::SetCutMap ( CbmCutMap * map)
inherited

Set the cut map for analysis.

Parameters
cutMapPointer to the CbmCutMap object.

Definition at line 21 of file CbmStsAnaBase.cxx.

References fAnalysisCuts.

◆ SetWalkFile()

void CbmStsTimeCal::SetWalkFile ( std::string par_file)

Set parameter file used during unpacking.

Parameters
file_namefull/relative path to the parameters file

Definition at line 93 of file CbmStsTimeCal.cxx.

References fParFile.

◆ UserAlignment()

void CbmStsAnaBase::UserAlignment ( const std::map< int32_t, std::vector< double > > & user_mat)
inlineinherited

User defined sensor translations.

Parameters
user_matInput translations.

Definition at line 60 of file CbmStsAnaBase.h.

References fUserAlignment.

◆ WriteYAML()

void CbmStsTimeCal::WriteYAML ( )
private

Write parameters file in YAML format.

Parameters
o_pathoutput folder where to save the file

Definition at line 514 of file CbmStsTimeCal.cxx.

References fGlobalTimeOffset, fOutputPath, and fWalkMapRaw.

Referenced by Finish().

Member Data Documentation

◆ entry_

◆ fAddressBook

◆ fAnalysisCuts

◆ fCanvas

std::map<std::string, std::unique_ptr<TCanvas> > CbmStsAnaBase::fCanvas
protectedinherited

Definition at line 75 of file CbmStsAnaBase.h.

◆ fCbmEvtArray

TClonesArray* CbmStsTimeCal::fCbmEvtArray {nullptr}
private

Definition at line 123 of file CbmStsTimeCal.h.

Referenced by Init().

◆ fDigiManager

CbmDigiManager* CbmStsTimeCal::fDigiManager {nullptr}
private

Definition at line 121 of file CbmStsTimeCal.h.

Referenced by CheckTiming(), and Init().

◆ fFirstZStrip

std::unordered_map<int32_t, int> CbmStsAnaBase::fFirstZStrip
protectedinherited

Definition at line 82 of file CbmStsAnaBase.h.

Referenced by LoadSetup().

◆ fG1D

std::map<std::string, std::unique_ptr<TGraphErrors> > CbmStsAnaBase::fG1D
protectedinherited

◆ fGlobalTimeOffset

double CbmStsTimeCal::fGlobalTimeOffset {0}
private

Definition at line 106 of file CbmStsTimeCal.h.

Referenced by LoadWalkFromFile(), and WriteYAML().

◆ fH1D

◆ fH2D

◆ fH2DShared

std::map<std::string, std::shared_ptr<TH2D> > CbmStsAnaBase::fH2DShared
protectedinherited

Definition at line 74 of file CbmStsAnaBase.h.

Referenced by CbmEventVertexDca::BookHistograms(), and SaveToFile().

◆ fOutputPath

std::string CbmStsTimeCal::fOutputPath {""}
private

Definition at line 111 of file CbmStsTimeCal.h.

Referenced by Init(), and WriteYAML().

◆ fParFile

std::string CbmStsTimeCal::fParFile {""}
private

Definition at line 110 of file CbmStsTimeCal.h.

Referenced by LoadWalkFromFile(), and SetWalkFile().

◆ fRefSystem

ECbmModuleId CbmStsTimeCal::fRefSystem {ECbmModuleId::kBmon}
private

Definition at line 119 of file CbmStsTimeCal.h.

Referenced by BookHistograms(), CbmStsTimeCal(), CbmStsTimeCal(), CheckTimeWalk(), Exec(), and Init().

◆ fReportFile

std::unique_ptr<TFile> CbmStsAnaBase::fReportFile
protectedinherited

Definition at line 69 of file CbmStsAnaBase.h.

Referenced by CbmStsTimeCal::DrawResults(), and CbmStsTimeCal::Init().

◆ fReportFit

std::unique_ptr<TFile> CbmStsTimeCal::fReportFit
private

Definition at line 117 of file CbmStsTimeCal.h.

Referenced by CheckTimeWalk(), and Init().

◆ fReportOffset

std::unique_ptr<TFile> CbmStsTimeCal::fReportOffset
private

Definition at line 116 of file CbmStsTimeCal.h.

Referenced by FindModuleOffset(), and Init().

◆ fRunId

int CbmStsAnaBase::fRunId {-1}
protectedinherited

Definition at line 86 of file CbmStsAnaBase.h.

Referenced by CbmStsTimeCal::CbmStsTimeCal(), and CbmStsTimeCal::Init().

◆ fStsGeoInfo

◆ fTimeWindowMax

double CbmStsTimeCal::fTimeWindowMax {+60}
private

◆ fTimeWindowMin

double CbmStsTimeCal::fTimeWindowMin {-60}
private

◆ fUserAlignment

std::map<int32_t, std::vector<double> > CbmStsAnaBase::fUserAlignment
protectedinherited

Definition at line 80 of file CbmStsAnaBase.h.

Referenced by UserAlignment().

◆ fWalkMap

cbm::algo::sts::WalkMap CbmStsTimeCal::fWalkMap
private

Definition at line 114 of file CbmStsTimeCal.h.

Referenced by InitTimeWalkMap(), and LoadWalkFromFile().

◆ fWalkMapRaw

std::map<int , std::map<int , std::vector<double> > > CbmStsTimeCal::fWalkMapRaw
private

Definition at line 113 of file CbmStsTimeCal.h.

Referenced by CheckTimeWalk(), Finish(), InitTimeWalkMap(), and WriteYAML().

◆ kStsClock

const double CbmStsTimeCal::kStsClock {3.125}
private

Definition at line 109 of file CbmStsTimeCal.h.

Referenced by BookHistograms().

◆ nb_sts_station_

int CbmStsAnaBase::nb_sts_station_ {8}
protectedinherited

The documentation for this class was generated from the following files: