Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TMixture.cxx
Go to the documentation of this file.
1// @(#)root/g3d:$Id$
2// Author: Rene Brun 03/10/95
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#include "TMixture.h"
13
14#include "TBuffer.h"
15#include "TMath.h"
16
17
18/** \class TMixture
19\ingroup g3d
20Manages a detector mixture. See class TGeometry.
21*/
22
23////////////////////////////////////////////////////////////////////////////////
24/// Mixture default constructor.
25
27{
28 fAmixt = nullptr;
29 fZmixt = nullptr;
30 fWmixt = nullptr;
31 fNmixt = 0;
32}
33
34////////////////////////////////////////////////////////////////////////////////
35/// Mixture normal constructor
36///
37/// Defines mixture OR COMPOUND as composed by
38/// the basic nmixt materials defined later by DefineElement.
39///
40/// If nmixt > 0 then Wmixt contains the PROPORTION BY WEIGHTS
41/// of each basic material in the mixture.
42///
43/// If nmixt < 0 then Wmixt contains the number of atoms
44/// of a given kind into the molecule of the COMPOUND
45/// In this case, Wmixt is changed to relative weights.
46///
47/// nb : the radiation length is computed according
48/// the EGS manual slac-210 uc-32 June-78
49/// formula 2-6-8 (37)
50
51TMixture::TMixture(const char *name, const char *title, Int_t nmixt)
52 :TMaterial(name,title,0,0,0)
53{
54 if (nmixt == 0) {
55 fAmixt = nullptr;
56 fZmixt = nullptr;
57 fWmixt = nullptr;
58 fNmixt = 0;
59 Error("TMixture", "mixture number is 0");
60 return;
61 }
63 fNmixt = nmixt;
64 fAmixt = new Float_t[nm];
65 fZmixt = new Float_t[nm];
66 fWmixt = new Float_t[nm];
67}
68
69////////////////////////////////////////////////////////////////////////////////
70/// Mixture default destructor.
71
73{
74 delete [] fAmixt;
75 delete [] fZmixt;
76 delete [] fWmixt;
77 fAmixt = nullptr;
78 fZmixt = nullptr;
79 fWmixt = nullptr;
80}
81
82////////////////////////////////////////////////////////////////////////////////
83/// Define one mixture element.
84
86{
87 if (n < 0 || n >= TMath::Abs(fNmixt)) return;
88 fAmixt[n] = a;
89 fZmixt[n] = z;
90 fWmixt[n] = w;
91}
92
93////////////////////////////////////////////////////////////////////////////////
94/// Stream a class object.
95
97{
99 if (b.IsReading()) {
100 b.ReadVersion(&R__s, &R__c);
102 b >> fNmixt;
104 fAmixt = new Float_t[nmixt];
105 fZmixt = new Float_t[nmixt];
106 fWmixt = new Float_t[nmixt];
107 b.ReadArray(fAmixt);
108 b.ReadArray(fZmixt);
109 b.ReadArray(fWmixt);
110 b.CheckByteCount(R__s, R__c, TMixture::IsA());
111 } else {
112 R__c = b.WriteVersion(TMixture::IsA(), kTRUE);
114 b << fNmixt;
116 b.WriteArray(fAmixt, nmixt);
117 b.WriteArray(fZmixt, nmixt);
118 b.WriteArray(fWmixt, nmixt);
119 b.SetByteCount(R__c, kTRUE);
120 }
121}
#define b(i)
Definition RSha256.hxx:100
#define a(i)
Definition RSha256.hxx:99
float Float_t
Float 4 bytes (float)
Definition RtypesCore.h:71
constexpr Bool_t kTRUE
Definition RtypesCore.h:107
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
char name[80]
Definition TGX11.cxx:110
Buffer base class used for serializing objects.
Definition TBuffer.h:43
Manages a detector material.
Definition TMaterial.h:28
void Streamer(TBuffer &) override
Stream an object of class TMaterial.
Definition TMaterial.cxx:80
Int_t fNmixt
Definition TMixture.h:29
~TMixture() override
Mixture default destructor.
Definition TMixture.cxx:72
void Streamer(TBuffer &) override
Stream a class object.
Definition TMixture.cxx:96
Float_t * fZmixt
Definition TMixture.h:31
Float_t * fWmixt
Definition TMixture.h:32
Float_t * fAmixt
Definition TMixture.h:30
virtual void DefineElement(Int_t n, Float_t a, Float_t z, Float_t w)
Define one mixture element.
Definition TMixture.cxx:85
TClass * IsA() const override
Definition TMixture.h:45
TMixture()
Mixture default constructor.
Definition TMixture.cxx:26
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definition TObject.cxx:1071
const Int_t n
Definition legend1.C:16
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.
Definition TMathBase.h:124