#include "GFGbl.h"
#include "GblTrajectory.h"
#include "GblPoint.h"
#include "MyDebugTools.h"
#include "AbsMeasurement.h"
#include "PlanarMeasurement.h"
#include "KalmanFitterInfo.h"
#include "Track.h"
#include <TFile.h>
#include <TH1F.h>
#include <TTree.h>
#include <string>
#include <list>
#include <FieldManager.h>
#include <HMatrixU.h>
#include <HMatrixV.h>
#include <Math/SMatrix.h>
#include <TMatrixD.h>
#include <TVectorDfwd.h>
#include <TMatrixT.h>
#include <TVector3.h>
Go to the source code of this file.
|
void | getScattererFromMatList (double &length, double &theta, double &s, double &ds, const double p, const double mass, const double charge, const std::vector< MatStep > &steps) |
| Evaluates moments of radiation length distribution from list of material steps and computes parameters describing a corresponding thick scatterer.
|
|
◆ getScattererFromMatList()
void getScattererFromMatList |
( |
double & |
length, |
|
|
double & |
theta, |
|
|
double & |
s, |
|
|
double & |
ds, |
|
|
const double |
p, |
|
|
const double |
mass, |
|
|
const double |
charge, |
|
|
const std::vector< MatStep > & |
steps |
|
) |
| |
Evaluates moments of radiation length distribution from list of material steps and computes parameters describing a corresponding thick scatterer.
Based on input from Claus Kleinwort (DESY), adapted for continuous material distribution represented by a sum of step functions. Returned thick scatterer can be represented by two GBL scattering points at (s - ds) and (s + ds) with variance of theta equal to theta/sqrt(2) for both points. Calculates variance of theta from total sum of radiation lengths instead of summimg squares of individual deflection angle variances.
- Parameters
-
length | returned: Length of the track |
theta | returned: Variation of distribution of deflection angle |
s | returned: First moment of material scattering distribution |
ds | returned: Second moment (variance) of material scattering distribution |
p | Particle momentum magnitude (GeV/c) |
mass | Mass of particle (GeV/c/c) |
steps | Vector of material steps from (RKTrackRep) extrapolation |
- Returns
- void
Definition at line 262 of file GFGbl.cc.
263{
265 if (steps.empty()) return;
266
267
268 double len = 0.;
269
270 double sumxx = 0.;
271
272 double sumx2x2 = 0.;
273
274 double sumx3x3 = 0.;
275
276 double xmin = 0.;
277 double xmax = 0.;
278
279 for (
unsigned int i = 0;
i < steps.size();
i++) {
281
282 double rho = 1. /
step.materialProperties_.getRadLen();
283 len += fabs(
step.stepSize_);
284 xmin = xmax;
285 xmax = xmin + fabs(
step.stepSize_);
286
287
288
289 sumxx += rho * (xmax - xmin);
290
291 sumx2x2 += rho * (xmax * xmax - xmin * xmin) / 2.;
292
293 sumx3x3 += rho * (xmax * xmax * xmax - xmin * xmin * xmin) / 3.;
294 }
295
296 if (sumxx < 1.0e-10) return;
297
298
299
300 double beta =
p / sqrt(p * p + mass * mass);
301 theta = (0.0136 /
p /
beta) * fabs(charge) * sqrt(sumxx) * (1. + 0.038 *
log(sumxx));
302
303
304
306
307 double N = 1. / sumxx;
308
310
311
312 double ds_2 =
N * (sumx3x3 - 2. * sumx2x2 *
s + sumxx *
s *
s);
314
315 #ifdef DEBUG
316
317
318
319
320
321 #endif
322}
Simple struct containing MaterialProperties and stepsize in the material.
◆ milleFile
◆ scatEpsilon
const double scatEpsilon = 1.e-8 |