allow the exponent for the temperature evolution for lambda to be set. If not given, the two fluid exponent 4 will be chosen.

This commit is contained in:
suter_a 2018-07-11 13:39:58 +02:00
parent 98051779d5
commit 8494ca71db
2 changed files with 11 additions and 3 deletions

View File

@ -102,6 +102,8 @@ PNL_PippardFitterGlobal::PNL_PippardFitterGlobal()
fFieldB = 0;
fShift = 0;
f_nn = 4.0;
f_dx = 0.02;
}
@ -323,7 +325,7 @@ Double_t PNL_PippardFitterGlobal::DeltaBCS(const Double_t t) const
*/
Double_t PNL_PippardFitterGlobal::LambdaL_T(const Double_t lambdaL, const Double_t t) const
{
return lambdaL/sqrt(1.0-pow(t,4.0));
return lambdaL/sqrt(1.0-pow(t, f_nn));
}
//--------------------------------------------------------------------------
@ -431,7 +433,11 @@ Bool_t PNL_PippardFitter::GlobalPartIsValid() const
Double_t PNL_PippardFitter::operator()(Double_t t, const std::vector<Double_t> &param) const
{
// param: [0] energy, [1] temp, [2] thickness, [3] meanFreePath, [4] xi0, [5] lambdaL, [6] Bext, [7] phase, [8] dead-layer
assert(param.size() == 9);
// optionally [9] nn, where nn is the exponent in lambda = lambda_L / sqrt(1-t^nn). Default is nn=4.
assert((param.size() == 9) || (param.size() == 10));
if (param.size() == 10) // nn given, hence set it
fPippardFitterGlobal->SetTempExponent(param[9]);
// for negative time return polarization == 1
if (t <= 0.0)

View File

@ -47,10 +47,11 @@ class PNL_PippardFitterGlobal
virtual ~PNL_PippardFitterGlobal();
Bool_t IsValid() { return fValid; }
virtual void SetTempExponent(const Double_t nn) { f_nn = nn; }
virtual void CalculateField(const std::vector<Double_t> &param) const;
virtual Int_t GetEnergyIndex(const Double_t energy) { return fRgeHandler->GetRgeEnergyIndex(energy); }
virtual Double_t GetMuonStoppingDensity(const Int_t energyIndex, const Double_t z) const { return fRgeHandler->GetRgeValue(energyIndex, z); }
virtual Double_t GetMagneticField(const Double_t z) const;
virtual Double_t GetMagneticField(const Double_t z) const;
private:
Bool_t fValid;
@ -60,6 +61,7 @@ class PNL_PippardFitterGlobal
mutable std::vector<Double_t> fPreviousParam;
Double_t f_nn;
Double_t f_dx; // dx = xiPT dq
mutable Double_t f_dz; // spatial step size