KaliVeda
Toolkit for HIC analysis
KVElasticScatterEvent.h
1 /*
2 $Id: KVElasticScatterEvent.h,v 1.3 2009/01/14 15:35:50 ebonnet Exp $
3 $Revision: 1.3 $
4 $Date: 2009/01/14 15:35:50 $
5 */
6 
9 
10 #ifndef __KVELASTICSCATTEREVENT_H
11 #define __KVELASTICSCATTEREVENT_H
12 
13 #include "KVString.h"
14 #include "TVector3.h"
15 #include "KVTarget.h"
16 #include "KVNucleus.h"
17 #include "KVSimEvent.h"
18 #include "KV2Body.h"
19 #include "KVReconstructedNucleus.h"
20 #include "KVReconstructedEvent.h"
21 #include "TObject.h"
22 #include "KVHashList.h"
23 #include "KVBase.h"
24 #include "KVDBSystem.h"
25 #include "KVPosition.h"
26 
67 
77 class KVElasticScatterEvent : public KVBase {
78 
79 protected:
87 
90 
95 
102  /*
103  Bool_t SecondTurn;
104  Double_t Ekdiff_ST;
105  Double_t Thdiff_ST;
106  Double_t Phdiff_ST;
107  */
108  void init();
109  void GenereKV2Body();
111  void PropagateInTargetLayer();
113  void StartEvents();
114  virtual void MakeDiffusion();
115  void SortieDeCible();
116 
117 public:
118 
119  enum {
120  kProjIsSet = BIT(14), //kTRUE if projectile nucleus defined
121  kTargIsSet = BIT(15), //kTRUE if target nucleus defined
122  kHasTarget = BIT(16), //kTRUE if target material defined
123  kIsUpdated = BIT(17), //flag indicating if ValidateEntrance method has to be called
124  kIsDetectionOn = BIT(18) //flag indicating if user asked detection of events
125  };
126 
128  {
129  return TestBit(kProjIsSet);
130  }
132  {
133  return TestBit(kTargIsSet);
134  }
136  {
137  return TestBit(kHasTarget);
138  }
140  {
141  return TestBit(kIsUpdated);
142  }
144  {
145  return TestBit(kIsDetectionOn);
146  }
147 
148  void ChooseKinSol(Int_t choix = 1);
149 
151  virtual ~KVElasticScatterEvent();
152 
153  virtual void SetSystem(KVDBSystem* sys);
154  virtual void SetSystem(Int_t zp, Int_t ap, Double_t ekin, Int_t zt, Int_t at);
155  virtual void SetTargNucleus(KVNucleus* nuc);
156  virtual void SetProjNucleus(KVNucleus* nuc);
157 
158  void SetDetectionOn(Bool_t On = kTRUE);
159 
160 
161  KVNucleus* GetNucleus(const Char_t* name) const;
162  KVNucleus* GetNucleus(Int_t ii) const;
163 
164  virtual void SetTargetMaterial(KVTarget* targ, Bool_t IsRandomized = kTRUE);
165  KVTarget* GetTarget() const;
166 
168 
170  {
171  return GetReconstructedEvent()->GetParticleWithName(nucname);
172  }
174  {
175  return rec_evt;
176  }
177  KVEvent* GetSimEvent(void) const
178  {
179  return sim_evt;
180  }
181 
182  virtual void Reset();
183  virtual Bool_t ValidateEntrance();
184 
185  void SetDiffNucleus(KVString name = "PROJ");
186  void SetRandomOption(Option_t* opt = "isotropic");
187  Bool_t IsIsotropic() const;
188 
189  virtual void Process(Int_t ntimes = 1, Bool_t reset = kTRUE);
190 
191  virtual void SetAnglesForDiffusion(Double_t theta, Double_t phi);
192  virtual void Filter();
193  virtual void TreateEvent();
194 
195  virtual void DefineAngularRange(TObject*);
196  void DefineAngularRange(Double_t tmin, Double_t tmax, Double_t pmin, Double_t pmax);
197  Double_t GetTheta(KVString opt) const;
198  Double_t GetPhi(KVString opt)const;
199 
201  {
202  return kb2;
203  }
204  void Print(Option_t* /*opt*/ = "") const;
205 
206  virtual void ClearTrees();
207  virtual void ResetTrees();
208  virtual void DefineTrees();
209  KVHashList* GetTrees() const;
210 
211  virtual void ClearHistos();
212  virtual void DefineHistos();
213  virtual void ResetHistos();
214  KVHashList* GetHistos() const;
215 
216  ClassDef(KVElasticScatterEvent, 1) //simulate ElasticScatterEvent and answer of a given (multi-)detector
217 };
218 
219 #endif
int Int_t
bool Bool_t
char Char_t
double Double_t
const char Option_t
#define ClassDef(name, id)
#define BIT(n)
Relativistic binary kinematics calculator.
Definition: KV2Body.h:166
Base class for KaliVeda framework.
Definition: KVBase.h:139
Database class used to store information on different colliding systems studied during an experiment....
Definition: KVDBSystem.h:52
simulate ElasticScatterEvent and answer of a given (multi-)detector : A + B -> A + B
virtual void SetProjNucleus(KVNucleus *nuc)
Define new projectile nucleus.
virtual void SetSystem(KVDBSystem *sys)
KVHashList * ltree
to store tree
virtual TVector3 & GetInteractionPointInTargetLayer()
return the last interaction point in the target
void Print(Option_t *="") const
virtual void ClearTrees()
Efface la liste des arbres et leur contenu et met le pointeur a zero.
virtual void DefineAngularRange(TObject *)
void SetDiffNucleus(KVString name="PROJ")
virtual void SetTargNucleus(KVNucleus *nuc)
Define new target nucleus.
Bool_t IsIsotropic() const
retoune kTRUE si l'option choisi est isotrope
virtual void SetAnglesForDiffusion(Double_t theta, Double_t phi)
void SetRandomOption(Option_t *opt="isotropic")
KVReconstructedNucleus * GetReconstructedNucleus(KVString nucname)
KVHashList * GetTrees() const
return the list where histo are stored
KVTarget * GetTarget() const
return the current target material
virtual void Process(Int_t ntimes=1, Bool_t reset=kTRUE)
virtual void ClearHistos()
Efface la liste des histo et leur contenu et met le pointeur a zero.
KVElasticScatterEvent()
Default constructor.
virtual void ResetHistos()
Reset histo in the list.
virtual void SetTargetMaterial(KVTarget *targ, Bool_t IsRandomized=kTRUE)
KVReconstructedEvent * rec_evt
void SetDetectionOn(Bool_t On=kTRUE)
KVEvent * GetSimEvent(void) const
KVHashList * GetHistos() const
return the list where histo are stored
Int_t kTreatedNevts
number of diffusion performed
virtual ~KVElasticScatterEvent()
Destructor.
virtual void Reset()
Set contents/entries to zero for predifined histograms, trees.
KVReconstructedEvent * GetReconstructedEvent(void) const
KVHashList * lhisto
to store control histogram
KVNucleus * GetNucleus(const Char_t *name) const
return the current projectile ("PROJ") or the target ("TARG") nucleus
void ChooseKinSol(Int_t choix=1)
Bool_t DefineTargetNucleusFromLayer(KVString layer_name="")
Double_t GetPhi(KVString opt) const
Double_t GetTheta(KVString opt) const
Abstract base class container for multi-particle events.
Definition: KVEvent.h:67
Extended version of ROOT THashList.
Definition: KVHashList.h:29
Description of properties and kinematics of atomic nuclei.
Definition: KVNucleus.h:123
Base class used for handling geometry in a multidetector array.
Definition: KVPosition.h:91
Event containing KVReconstructedNucleus nuclei reconstructed from hits in detectors.
Nuclei reconstructed from data measured by a detector array .
Container class for simulated nuclei, KVSimNucleus.
Definition: KVSimEvent.h:22
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Definition: KVString.h:73
Calculation/correction of energy losses of particles through an experimental target.
Definition: KVTarget.h:128
Particle * GetParticleWithName(const Char_t *name) const
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const