source: trunk/source/processes/electromagnetic/polarisation/include/G4StokesVector.hh @ 1199

Last change on this file since 1199 was 1196, checked in by garnier, 15 years ago

update CVS release candidate geant4.9.3.01

File size: 3.9 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26// $Id: G4StokesVector.hh,v 1.4 2007/11/01 17:32:34 schaelic Exp $
27// GEANT4 tag $Name: geant4-09-03-cand-01 $
28//
29// GEANT4 Class header file
30//
31// File name:     G4StokesVector
32//
33// Author:        Andreas Schaelicke
34//
35// Creation date: 01.05.2005
36//
37// Modifications:
38// 27-07-06 added some test routines (P.Starovoitov)
39// 25-08-06 modified name of test routines (A.Schaelicke)
40//
41// Class Description:
42//
43// Provides Stokesvector representation employed in implementation of
44// polarized processes.
45//
46// aim:
47//   - store three components of a stokesvector
48//   - distinguish between boson or fermion state (different transformations)
49//   - provide unique definition of reference frame (cf. G4PolarizationHelper)
50//
51
52#ifndef G4StokesVector_h
53#define G4StokesVector_h 1
54
55#include "G4ThreeVector.hh"
56#include "G4RotationMatrix.hh"
57
58
59class G4StokesVector: public G4ThreeVector
60{
61 public:
62  // standard vectors:
63  static const G4StokesVector ZERO;
64  static const G4StokesVector P1;
65  static const G4StokesVector P2;
66  static const G4StokesVector P3;
67  static const G4StokesVector M1;
68  static const G4StokesVector M2;
69  static const G4StokesVector M3;
70public:
71  G4StokesVector();
72  G4StokesVector(const G4ThreeVector & v);
73  virtual ~G4StokesVector();
74public:
75  inline G4double p1() const { return x(); }
76  inline G4double p2() const { return y(); }
77  inline G4double p3() const { return z(); }
78
79  inline G4bool IsZero() const { return *this==ZERO; } 
80  inline G4double Transverse() const { return perp(); } 
81
82  inline G4ThreeVector PolSqr() const { 
83    return G4ThreeVector(x()*x(),y()*y(),z()*z()); 
84  }
85  inline G4ThreeVector PolSqrt() const { 
86    return G4ThreeVector(std::sqrt(x()),std::sqrt(y()),std::sqrt(z())); 
87  }
88  G4ThreeVector PolError(const G4StokesVector & sum2, long n);
89
90  // Ratio of 3-vectors.
91  G4ThreeVector PolDiv( const G4StokesVector & );
92
93  inline void SetPhoton() { isPhoton=true; }
94
95  void RotateAz(G4ThreeVector nInteractionFrame, 
96                G4ThreeVector particleDirection);
97  void InvRotateAz(G4ThreeVector nInteractionFrame, 
98                   G4ThreeVector particleDirection);
99  void RotateAz(G4double cosphi, G4double sinphi);
100  G4double GetBeta();
101
102  void DiceUniform();
103  void DiceP1();
104  void DiceP2();
105  void DiceP3();
106
107  void FlipP3();
108private:
109  G4bool isPhoton;
110};
111
112
113#endif
Note: See TracBrowser for help on using the repository browser.