ROOT logo
// @(#)root/g3d:$Id: TMixture.cxx 31811 2009-12-10 15:45:31Z couet $
// Author: Rene Brun   03/10/95

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#include "TMixture.h"
#include "TMath.h"

ClassImp(TMixture)

//______________________________________________________________________________
//
// Manages a detector mixture. See class TGeometry.
//


//______________________________________________________________________________
TMixture::TMixture()
{
   // Mixture default constructor.

   fAmixt = 0;
   fZmixt = 0;
   fWmixt = 0;
   fNmixt = 0;
}


//______________________________________________________________________________
TMixture::TMixture(const char *name, const char *title, Int_t nmixt)
           :TMaterial(name,title,0,0,0)
{
   // Mixture normal constructor
   //
   //       Defines mixture OR COMPOUND as composed by
   //       the basic nmixt materials defined later by DefineElement.
   //
   //       If nmixt > 0 then Wmixt contains the PROPORTION BY WEIGHTS
   //       of each basic material in the mixture.
   //
   //       If nmixt < 0 then Wmixt contains the number of atoms
   //       of a given kind into the molecule of the COMPOUND
   //       In this case, Wmixt is changed to relative weights.
   //
   //       nb : the radiation length is computed according
   //            the EGS manual slac-210 uc-32 June-78
   //                          formula  2-6-8 (37)

   if (nmixt == 0) {
      fAmixt = 0;
      fZmixt = 0;
      fWmixt = 0;
      fNmixt = 0;
      Error("TMixture", "mixture number is 0");
      return;
   }
   Int_t nm = TMath::Abs(nmixt);
   fNmixt   = nmixt;
   fAmixt   = new Float_t[nm];
   fZmixt   = new Float_t[nm];
   fWmixt   = new Float_t[nm];
}


//______________________________________________________________________________
TMixture::~TMixture()
{
   // Mixture default destructor.

   delete [] fAmixt;
   delete [] fZmixt;
   delete [] fWmixt;
   fAmixt = 0;
   fZmixt = 0;
   fWmixt = 0;
}


//______________________________________________________________________________
void TMixture::DefineElement(Int_t n, Float_t a, Float_t z, Float_t w)
{
   // Define one mixture element.

   if (n < 0 || n >= TMath::Abs(fNmixt)) return;
   fAmixt[n] = a;
   fZmixt[n] = z;
   fWmixt[n] = w;
}


//______________________________________________________________________________
void TMixture::Streamer(TBuffer &b)
{
   // Stream a class object.

   UInt_t R__s, R__c;
   if (b.IsReading()) {
      b.ReadVersion(&R__s, &R__c);
      TMaterial::Streamer(b);
      b >> fNmixt;
      Int_t nmixt = TMath::Abs(fNmixt);
      fAmixt   = new Float_t[nmixt];
      fZmixt   = new Float_t[nmixt];
      fWmixt   = new Float_t[nmixt];
      b.ReadArray(fAmixt);
      b.ReadArray(fZmixt);
      b.ReadArray(fWmixt);
      b.CheckByteCount(R__s, R__c, TMixture::IsA());
   } else {
      R__c = b.WriteVersion(TMixture::IsA(), kTRUE);
      TMaterial::Streamer(b);
      b << fNmixt;
      Int_t nmixt = TMath::Abs(fNmixt);
      b.WriteArray(fAmixt, nmixt);
      b.WriteArray(fZmixt, nmixt);
      b.WriteArray(fWmixt, nmixt);
      b.SetByteCount(R__c, kTRUE);
   }
}
 TMixture.cxx:1
 TMixture.cxx:2
 TMixture.cxx:3
 TMixture.cxx:4
 TMixture.cxx:5
 TMixture.cxx:6
 TMixture.cxx:7
 TMixture.cxx:8
 TMixture.cxx:9
 TMixture.cxx:10
 TMixture.cxx:11
 TMixture.cxx:12
 TMixture.cxx:13
 TMixture.cxx:14
 TMixture.cxx:15
 TMixture.cxx:16
 TMixture.cxx:17
 TMixture.cxx:18
 TMixture.cxx:19
 TMixture.cxx:20
 TMixture.cxx:21
 TMixture.cxx:22
 TMixture.cxx:23
 TMixture.cxx:24
 TMixture.cxx:25
 TMixture.cxx:26
 TMixture.cxx:27
 TMixture.cxx:28
 TMixture.cxx:29
 TMixture.cxx:30
 TMixture.cxx:31
 TMixture.cxx:32
 TMixture.cxx:33
 TMixture.cxx:34
 TMixture.cxx:35
 TMixture.cxx:36
 TMixture.cxx:37
 TMixture.cxx:38
 TMixture.cxx:39
 TMixture.cxx:40
 TMixture.cxx:41
 TMixture.cxx:42
 TMixture.cxx:43
 TMixture.cxx:44
 TMixture.cxx:45
 TMixture.cxx:46
 TMixture.cxx:47
 TMixture.cxx:48
 TMixture.cxx:49
 TMixture.cxx:50
 TMixture.cxx:51
 TMixture.cxx:52
 TMixture.cxx:53
 TMixture.cxx:54
 TMixture.cxx:55
 TMixture.cxx:56
 TMixture.cxx:57
 TMixture.cxx:58
 TMixture.cxx:59
 TMixture.cxx:60
 TMixture.cxx:61
 TMixture.cxx:62
 TMixture.cxx:63
 TMixture.cxx:64
 TMixture.cxx:65
 TMixture.cxx:66
 TMixture.cxx:67
 TMixture.cxx:68
 TMixture.cxx:69
 TMixture.cxx:70
 TMixture.cxx:71
 TMixture.cxx:72
 TMixture.cxx:73
 TMixture.cxx:74
 TMixture.cxx:75
 TMixture.cxx:76
 TMixture.cxx:77
 TMixture.cxx:78
 TMixture.cxx:79
 TMixture.cxx:80
 TMixture.cxx:81
 TMixture.cxx:82
 TMixture.cxx:83
 TMixture.cxx:84
 TMixture.cxx:85
 TMixture.cxx:86
 TMixture.cxx:87
 TMixture.cxx:88
 TMixture.cxx:89
 TMixture.cxx:90
 TMixture.cxx:91
 TMixture.cxx:92
 TMixture.cxx:93
 TMixture.cxx:94
 TMixture.cxx:95
 TMixture.cxx:96
 TMixture.cxx:97
 TMixture.cxx:98
 TMixture.cxx:99
 TMixture.cxx:100
 TMixture.cxx:101
 TMixture.cxx:102
 TMixture.cxx:103
 TMixture.cxx:104
 TMixture.cxx:105
 TMixture.cxx:106
 TMixture.cxx:107
 TMixture.cxx:108
 TMixture.cxx:109
 TMixture.cxx:110
 TMixture.cxx:111
 TMixture.cxx:112
 TMixture.cxx:113
 TMixture.cxx:114
 TMixture.cxx:115
 TMixture.cxx:116
 TMixture.cxx:117
 TMixture.cxx:118
 TMixture.cxx:119
 TMixture.cxx:120
 TMixture.cxx:121
 TMixture.cxx:122
 TMixture.cxx:123
 TMixture.cxx:124
 TMixture.cxx:125