-
Sergey Gorbunov authoredSergey Gorbunov authored
L1Fit.h 2.36 KiB
/* Copyright (C) 2021 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
SPDX-License-Identifier: GPL-3.0-only
Authors: Sergey Gorbunov [committer] */
/// \file L1Fit.h
/// \brief Definition of the L1Fit class
/// \author Sergey Gorbunov <se.gorbunov@gsi.de>
/// \date 15.03.2021
#ifndef L1Fit_H
#define L1Fit_H
#include "L1Def.h"
#include "L1MaterialInfo.h"
#include "L1TrackPar.h"
///
/// A collection of fit routines used by the CA tracker
///
class L1Fit {
public:
/// constructor
L1Fit() {};
/// destructor
~L1Fit() {};
/// set particle mass for the fit
void SetParticleMass(fvec mass)
{
fMass = mass;
fMass2 = mass * mass;
}
/// get the particle mass
fvec GetParticleMass() const { return fMass; }
/// get the particle mass squared
fvec GetParticleMass2() const { return fMass2; }
/// === routines for material
fvec BetheBlochIron(const float qp);
fvec BetheBlochCarbon(const float qp);
fvec BetheBlochAl(const float qp);
static fvec ApproximateBetheBloch(const fvec& bg2);
static fvec ApproximateBetheBloch(const fvec& bg2, const fvec& kp0, const fvec& kp1, const fvec& kp2, const fvec& kp3,
const fvec& kp4);
void EnergyLossCorrection(L1TrackPar& T, const fvec& radThick, fvec& qp0, fvec direction, fvec w);
void EnergyLossCorrectionAl(L1TrackPar& T, const fvec& radThick, fvec& qp0, fvec direction, fvec w);
void EnergyLossCorrectionCarbon(L1TrackPar& T, const fvec& radThick, fvec& qp0, fvec direction, fvec w);
void EnergyLossCorrectionIron(L1TrackPar& T, const fvec& radThick, fvec& qp0, fvec direction, fvec w);
void L1AddMaterial(L1TrackPar& T, fvec radThick, fvec qp0, fvec w);
void L1AddMaterial(L1TrackPar& T, L1MaterialInfo& info, fvec qp0, fvec w);
void L1AddThickMaterial(L1TrackPar& T, fvec radThick, fvec qp0, fvec w, fvec thickness, bool fDownstream);
void L1AddHalfMaterial(L1TrackPar& T, L1MaterialInfo& info, fvec qp0);
void L1AddPipeMaterial(L1TrackPar& T, fvec qp0, fvec w);
void L1AddTargetMaterial(L1TrackPar& T, fvec qp0, fvec w);
const fvec PipeRadThick = 7.87e-3f; // 0.7 mm Aluminium
const fvec TargetRadThick = 3.73e-2f * 2; // 250 mum Gold
private:
fvec fMass = 0.10565800; // muon mass by default (pion 0.13957000f )
fvec fMass2 = fMass * fMass;
//ClassDefNV(L1Fit, 0)
};
#include "L1FitMaterial.h"
#endif