~jan.greis/maus/1811

« back to all changes in this revision

Viewing changes to src/common_cpp/Recon/.Kalman_old/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