Skip to content
Snippets Groups Projects
Commit 83fd5ce1 authored by Hanna Malygina's avatar Hanna Malygina
Browse files

Add parameters needed for Lorentz shift calculation

git-svn-id: https://subversion.gsi.de/cbmsoft/cbmroot/trunk@7532 5a1b234a-d7ce-0410-9a93-fd649a8fa65c
parent 3c59a1ab
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,7 @@
#include <iomanip>
#include <sstream>
#include "FairLogger.h"
#include "CbmStsSensorConditions.h"
using namespace std;
......@@ -32,6 +33,7 @@ CbmStsSensorConditions::CbmStsSensorConditions(Double_t vFd,
{
if ( fCinterstrip + fCcoupling != 0. )
fCrossTalk = cInterstrip / (cInterstrip + cCoupling);
SetHallMobilityParameters();
}
// -------------------------------------------------------------------------
......@@ -40,6 +42,71 @@ CbmStsSensorConditions::CbmStsSensorConditions(Double_t vFd,
CbmStsSensorConditions::~CbmStsSensorConditions() { }
// -------------------------------------------------------------------------
// ----- Set parameters for Hall mobility calculation ------------------
void CbmStsSensorConditions::SetHallMobilityParameters() {
Double_t muLow[2], vSat[2], beta[2], rHall[2], muHall[2];
// electrons
muLow[0] = 1417. * pow (fTemperature / 300., -2.2);// cm^2 / (V s)
beta[0] = 1.109 * pow (fTemperature / 300., 0.66);
vSat[0] = 1.07e7 * pow (fTemperature / 300., 0.87);// cm / s
rHall[0] = 1.15;
fHallMobilityParametersE[0] = muLow[0];
fHallMobilityParametersE[1] = beta[0];
fHallMobilityParametersE[2] = vSat[0];
fHallMobilityParametersE[3] = rHall[0];
// holes
muLow[1] = 470.5 * pow (fTemperature / 300., -2.5);// cm^2 / (V s)
beta[1] = 1.213 * pow (fTemperature / 300., 0.17);
vSat[1] = 0.837e7 * pow (fTemperature / 300., 0.52);// cm / s
rHall[1] = 0.7;
fHallMobilityParametersH[0] = muLow[1];
fHallMobilityParametersH[1] = beta[1];
fHallMobilityParametersH[2] = vSat[1];
fHallMobilityParametersH[3] = rHall[1];
//calculate mean shift
Double_t dZ = 0.03, E = (fVbias - fVfd) / dZ + 2 * fVfd / dZ;//dZ - sensor thickness, E - el field [V/cm]
Int_t nSteps = 1000;
Double_t deltaZ = dZ / nSteps;
Double_t dxMean[2];
dxMean[0] = dxMean[1] = 0.;
for (Int_t j = 0; j <= nSteps; j++){
E -= 2 * fVfd / dZ * deltaZ / dZ;//V / cm
for (Int_t i = 0; i < 2; i++){
muHall[i] = rHall[i] * muLow[i] / pow ((1 + pow (muLow[i] * E / vSat[i], beta[i])), 1 / beta[i]);
if (i == 1) dxMean[i] += muHall[i] * j * deltaZ;
if (i == 0) dxMean[i] += muHall[i] * (dZ - j * deltaZ);
}
}
for (Int_t i = 0; i < 2; i++) dxMean[i] /= nSteps;
fMeanLorentzShift[0] = dxMean[0] * fBy * 1.e-4;
fMeanLorentzShift[1] = dxMean[1] * fBy * 1.e-4;
}
// -------------------------------------------------------------------------
// ----- Get parameters for Hall mobility calculation into array --------
void CbmStsSensorConditions::GetHallMobilityParametersInto(Double_t * hallMobilityParameters, Int_t chargeType) const {
if (chargeType == 0) { // electrons
for (Int_t i = 0; i < 4; i++) hallMobilityParameters[i] = fHallMobilityParametersE[i];
} else if (chargeType == 1) { // holes
for (Int_t i = 0; i < 4; i++) hallMobilityParameters[i] = fHallMobilityParametersH[i];
} else LOG(ERROR) << GetName() << "Cannot get parameter for Hall mobility. Unknown type of charge carriers. Must be 0 or 1!" << FairLogger::endl;
}
// -------------------------------------------------------------------------
// ----- String output -------------------------------------------------
......
......@@ -88,8 +88,19 @@ class CbmStsSensorConditions : public TObject {
** @return Full depletion voltage [V]
**/
Double_t GetVfd() const { return fVfd; }
/** Mean shift due to magnetic field
** @param Side: 0 - electrons, 1 - holes
** @return Mean shift[cm]
**/
Double_t GetMeanLorentzShift(Int_t side) const { return fMeanLorentzShift[side]; }
/** Get parameters for Hall mobility calculation into array**/
void GetHallMobilityParametersInto(Double_t * hallMobilityParameters, Int_t chargeType) const;
/** Parameters for Hall mobility calculation **/
void SetHallMobilityParameters();
/** Set the magnetic field
** @param bx,by,bz Magnetic field components in sensor centre [T]
**/
......@@ -116,6 +127,9 @@ class CbmStsSensorConditions : public TObject {
Double_t fBx; ///< Mag. field (x comp.) at sensor centre [T]
Double_t fBy; ///< Mag. field (y comp.) at sensor centre [T]
Double_t fBz; ///< Mag. field (z comp.) at sensor centre [T]
Double_t fHallMobilityParametersE[4]; ///< Array with parameters for electron Hall mobility calculation
Double_t fHallMobilityParametersH[4]; ///< Array with parameters for hole Hall mobility calculation
Double_t fMeanLorentzShift[2];///< Lorenz shift averaged over the z-coordinate of the chage carrier creation
ClassDef(CbmStsSensorConditions, 1);
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment