// @(#)root/g3d:$Name: $:$Id: TMixture.cxx,v 1.2 2003/04/03 20:20:15 brun Exp $
// 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;
}
//______________________________________________________________________________
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);
}
}
ROOT page - Class index - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.