~jan.greis/maus/1811

« back to all changes in this revision

Viewing changes to src/common_cpp/Recon/Kalman/KalmanStraightPropagator.hh

Merging start

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* This file is part of MAUS: http://micewww.pp.rl.ac.uk:8080/projects/maus
2
 
 *
3
 
 * MAUS is free software: you can redistribute it and/or modify
4
 
 * it under the terms of the GNU General Public License as published by
5
 
 * the Free Software Foundation, either version 3 of the License, or
6
 
 * (at your option) any later version.
7
 
 *
8
 
 * MAUS is distributed in the hope that it will be useful,
9
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
 
 * GNU General Public License for more details.
12
 
 *
13
 
 * You should have received a copy of the GNU General Public License
14
 
 * along with MAUS.  If not, see <http://www.gnu.org/licenses/>.
15
 
 *
16
 
 */
17
 
 
18
 
 
19
 
#ifndef STRAIGHTTRACK_HH
20
 
#define STRAIGHTTRACK_HH
21
 
 
22
 
// C headers
23
 
#include <assert.h>
24
 
#include <math.h>
25
 
 
26
 
// C++ headers
27
 
#include <string>
28
 
#include <vector>
29
 
 
30
 
#include "TMath.h"
31
 
#include "TMatrixD.h"
32
 
 
33
 
#include "src/common_cpp/Recon/Kalman/KalmanPropagator.hh"
34
 
 
35
 
namespace MAUS {
36
 
 
37
 
/** @class KalmanStraightPropagator
38
 
 *
39
 
 *  @brief Models the propagation of particles in the absence of fields.
40
 
 *
41
 
 *  Inherits from KalmanTrack, where most of the functionality is defined.
42
 
 *  The methods overwritten here are the ones related with particle propagation.
43
 
 *
44
 
 */
45
 
class KalmanStraightPropagator : public KalmanPropagator {
46
 
 public:
47
 
  /** @brief Straight Track constructor.
48
 
   */
49
 
  KalmanStraightPropagator();
50
 
 
51
 
  /** @brief Destructor.
52
 
   */
53
 
  virtual ~KalmanStraightPropagator();
54
 
 
55
 
  /** @brief Calculates the propagator (F), using Taylor expansion at current site.
56
 
   */
57
 
  void UpdatePropagator(const KalmanState *old_site, const KalmanState *new_site);
58
 
 
59
 
  /** @brief Calculates the projected state.
60
 
   */
61
 
  void CalculatePredictedState(const KalmanState *old_site, KalmanState *new_site);
62
 
 
63
 
  /** @brief Returns the momentum of the track. In the straight track case, p is just a guess.
64
 
   */
65
 
  double GetTrackMomentum(const KalmanState *a_site = 0);
66
 
 
67
 
  TMatrixD BuildQ(TMatrixD a, double L0, double w);
68
 
 
69
 
  TMatrixD GetIntermediateState(const KalmanState *old_site, double delta_z, TMatrixD &F);
70
 
};
71
 
 
72
 
} // ~namespace MAUS
73
 
 
74
 
#endif