Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Class Members | File Members

MJVWaveform.cc

Go to the documentation of this file.
00001 //---------------------------------------------------------------------------//
00002 //bb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nu//
00003 //                                                                           //
00004 //                         MAJORANA Simulation                               //
00005 //                                                                           //
00006 //      This code implementation is the intellectual property of the         //
00007 //      MAJORANA Collaboration. It is based on Geant4, an intellectual       //
00008 //      property of the RD44 GEANT4 collaboration.                           //
00009 //                                                                           //
00010 //                        *********************                              //
00011 //                                                                           //
00012 //    Neither the authors of this software system, nor their employing       //
00013 //    institutes, nor the agencies providing financial support for this      //
00014 //    work  make  any representation or  warranty, express or implied,       //
00015 //    regarding this software system or assume any liability for its use.    //
00016 //    By copying, distributing or modifying the Program (or any work based   //
00017 //    on on the Program) you indicate your acceptance of this statement,     //
00018 //    and all its terms.                                                     //
00019 //                                                                           //
00020 //bb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nubb0nu//
00021 //---------------------------------------------------------------------------//
00022 //                                                          
00023 // $Id: MJVWaveform.cc,v 1.2 2004/11/09 13:42:39 xliu Exp $ 
00024 //      
00025 // CLASS IMPLEMENTATION:  MJVWaveform.cc
00026 //
00027 //---------------------------------------------------------------------------//
00033 // 
00034 //---------------------------------------------------------------------------//
00045 //---------------------------------------------------------------------------//
00046 //
00047 
00048 #include "io/MJLogger.hh"
00049 
00050 //---------------------------------------------------------------------------//
00051 
00052 #include "waveform/MJVWaveform.hh"      //Present MJ Class Headers 
00053 
00054 //---------------------------------------------------------------------------//
00055 
00056 MJVWaveform::MJVWaveform():
00057   fChargeAllocated(false), fCurrentAllocated(false),fDigitizedAllocated(false),
00058   fChargeSignal(0), fCurrentSignal(0), fDigitizedSignal(0)
00059 {;}
00060 
00061 //---------------------------------------------------------------------------//
00062 
00063 MJVWaveform::MJVWaveform(const MJVWaveform & other)
00064 {;}
00065 
00066 //---------------------------------------------------------------------------//
00067 
00068 MJVWaveform::~MJVWaveform()
00069 {
00070   if(fChargeAllocated) delete [] fChargeSignal;
00071   if(fCurrentAllocated) delete [] fCurrentSignal;
00072   if(fDigitizedAllocated) delete [] fDigitizedSignal;  
00073 }
00074 
00075 //---------------------------------------------------------------------------//
00076 
00077 void MJVWaveform::AddChargePoint(HepDouble charge)
00078 {
00079   if(fChargeAllocated && !fChargeArrayFull){
00080     if(fChargeStep < fNumberOfChargePoints && !fChargeArrayFull) {
00081       fChargeSignal[fChargeStep] = charge;
00082       fChargeTime = fChargeStep++ * fChargeTimeStep;
00083     } else {
00084       fChargeArrayFull = true;
00085       MJLog(trace) << "MJVWaveform::AddChargePoint : fChargeSignal array full "
00086                    << fChargeStep << " " << fNumberOfChargePoints << '\n';
00087     }
00088   } else {
00089     MJLog(error) << "MJWaveform::AddChargePoint : Charge array not allocated."
00090                  << " or full.\n";
00091   }    
00092 }
00093 
00094 //---------------------------------------------------------------------------//
00095 
00096 void MJVWaveform::AddCurrentPoint(HepDouble current)
00097 {
00098   if(fCurrentAllocated && !fCurrentArrayFull){
00099     if(fCurrentStep < fNumberOfCurrentPoints) {
00100       fCurrentSignal[fCurrentStep] = current;
00101       fCurrentTime = fCurrentStep++ * fCurrentTimeStep;
00102     } else {
00103       fCurrentArrayFull = true;
00104       MJLog(trace)<<"MJVWaveform::AddCurrentPoint : fCurrentSignal array full "
00105                   << fCurrentStep << " " << fNumberOfCurrentPoints << "\n";
00106     }
00107   } else {
00108     MJLog(error)<<"MJWaveform::AddCurrentPoint : Current array not allocated"
00109                 << " or full.\n";
00110   }    
00111 }
00112 
00113 //---------------------------------------------------------------------------//
00114 
00115 void MJVWaveform::AddDigitizedPoint(HepInt signal)
00116 {
00117   if(fDigitizedAllocated && !fDigitizedArrayFull){
00118     if(fDigitizedStep < fNumberOfDigitizedPoints) {
00119       fDigitizedSignal[fDigitizedStep] = signal;
00120       fDigitizedTime = fDigitizedStep++ * fDigitizedTimeStep;
00121     } else {
00122       fDigitizedArrayFull = false;
00123       MJLog(trace)<<"MJVWaveform::AddDigitizedPoint : fDigitizedSignal array"
00124                   << "full " << fDigitizedStep << " " 
00125                   << fNumberOfDigitizedPoints  << '\n';
00126     }
00127   } else {
00128     MJLog(error) << "MJWaveform::AddDigitizedPoint : Digitized array not "
00129                  << "allocated or full.\n";
00130   }    
00131 }
00132 
00133 //---------------------------------------------------------------------------//
00134 
00135 void MJVWaveform::AllocateChargeSignal()
00136 {
00137   if(fNumberOfChargePoints > 0) {
00138     if(!(fChargeSignal = new HepDouble[fNumberOfChargePoints])){ 
00139       MJLog(error) << "MJVWaveform::AllocateChargeSignal(): Array allocation"
00140                    << " returned NULL pointer." << "\n"; 
00141       MJLog(fatal);
00142     }
00143   } else {
00144     MJLog(error) << "MJVWaveform::AllocateChargeSignal(): Cannot allocate "
00145                  << "array of size < 1 : " << fNumberOfChargePoints << "\n";
00146     MJLog(fatal);
00147   }
00148   fChargeAllocated = true;
00149   fChargeArrayFull = false;
00150   fChargeStep = 0;
00151   fChargeTime = 0.0;
00152   MJLog(trace) << "MJVWaveform::AllocateChargeSignal(): Allocate array of" <<
00153     " length : " << fNumberOfChargePoints << '\n';
00154 }
00155 
00156 //---------------------------------------------------------------------------//
00157 
00158 void MJVWaveform::AllocateCurrentSignal()
00159 {
00160   if(fNumberOfCurrentPoints > 0) {
00161     if(!(fCurrentSignal = new HepDouble[fNumberOfCurrentPoints])){ 
00162       MJLog(error) << "MJVWaveform::AllocateCurrentSignal(): Array allocation"
00163                    << " returned NULL pointer." << "\n"; 
00164       MJLog(fatal);
00165     }
00166   } else {
00167     MJLog(error) << "MJVWaveform::AllocateCurrentSignal(): Cannot allocate" <<
00168       "array of size < 1 : " << fNumberOfCurrentPoints << "\n";
00169     MJLog(fatal);
00170   }
00171   fCurrentAllocated = true;
00172   fCurrentArrayFull = false;
00173   fCurrentStep = 0;
00174   fCurrentTime = 0.0;
00175   MJLog(trace) << "MJVWaveform::AllocateCurrentSignal(): Allocate array of" <<
00176     " length : " << fNumberOfCurrentPoints << '\n';
00177 }
00178 
00179 
00180 //---------------------------------------------------------------------------//
00181 
00182 void MJVWaveform::AllocateDigitizedSignal()
00183 {
00184   if(fNumberOfDigitizedPoints > 0) {
00185     if(!(fDigitizedSignal = new HepInt[fNumberOfDigitizedPoints])){ 
00186       MJLog(error) << "MJVWaveform::AllocateDigitizedSignal(): Array"
00187                    << " allocation returned NULL pointer." << "\n"; 
00188       MJLog(fatal);
00189     }
00190   } else {
00191     MJLog(error) << "MJVWaveform::AllocateDigitizedSignal(): Cannot allocate"<<
00192       "array of size < 1 : " << fNumberOfDigitizedPoints << "\n";
00193     MJLog(fatal);
00194   }
00195   fDigitizedAllocated = true;
00196   fDigitizedArrayFull = false;
00197   fDigitizedStep = 0;
00198   fDigitizedTime = 0.0;
00199   MJLog(trace) << "MJVWaveform::AllocateDigitizedSignal(): Allocated array"<<
00200     " of length : " << fNumberOfDigitizedPoints << 'n';
00201 }
00202 
00203 //---------------------------------------------------------------------------//
00204 
00205 void MJVWaveform::AllocateChargeSignal(HepInt numberofpoints)
00206 {
00207   fNumberOfChargePoints = numberofpoints;
00208   AllocateChargeSignal();
00209 }
00210 
00211 //---------------------------------------------------------------------------//
00212 
00213 void MJVWaveform::AllocateCurrentSignal(HepInt numberofpoints)
00214 {
00215   fNumberOfCurrentPoints = numberofpoints;
00216   AllocateCurrentSignal();
00217 }
00218 
00219 //---------------------------------------------------------------------------//
00220 
00221 void MJVWaveform::AllocateDigitizedSignal(HepInt numberofpoints)
00222 {
00223   fNumberOfDigitizedPoints = numberofpoints;
00224   AllocateDigitizedSignal();
00225 }
00226 
00227 //---------------------------------------------------------------------------//
00228 
00229 void MJVWaveform::IntegrateChargePoint(HepDouble charge)
00230 {
00231   if(fChargeAllocated && !fChargeArrayFull){
00232     if(fChargeStep < fNumberOfChargePoints && !fChargeArrayFull) {
00233       fChargeSignal[fChargeStep] = fChargeStep ? 
00234         charge + fChargeSignal[fChargeStep - 1] : charge;
00235       fChargeTime = fChargeStep++ * fChargeTimeStep;
00236     } else {
00237       fChargeArrayFull = true;
00238       MJLog(trace) << "MJVWaveform::AddChargePoint : fChargeSignal array full "
00239                    << fChargeStep << " " << fNumberOfChargePoints << '\n';
00240     }
00241   } else {
00242     MJLog(error) << "MJWaveform::AddChargePoint : Charge array not allocated."
00243                  << " or full.\n";
00244   }    
00245 }
00246 
00247 //---------------------------------------------------------------------------//
00248 
00249 void MJVWaveform::SetAllZero()
00250 {
00251   HepInt i;
00252 
00253   if(fChargeAllocated) 
00254     for(i = 0; i < fNumberOfChargePoints; i++)
00255       fChargeSignal[i] = 0.0;
00256   if(fCurrentAllocated) 
00257     for(i = 0; i < fNumberOfCurrentPoints; i++)
00258       fCurrentSignal[i] = 0.0;
00259   if(fDigitizedAllocated) 
00260     for(i = 0; i < fNumberOfDigitizedPoints; i++)
00261       fDigitizedSignal[i] = 0;
00262   fChargeStep = fCurrentStep = fDigitizedStep = 0; 
00263   fChargeTime = fCurrentTime = fDigitizedTime = 0.0;
00264 }
00265 
00266 //---------------------------------------------------------------------------//
00267 //---------------------------------------------------------------------------//
00268 
00269 
00270 

Generated on Mon Nov 29 16:58:53 2004 for Majorana Simulation by  doxygen 1.3.9.1