Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

CellKG.cxx

Go to the documentation of this file.
00001 
00002 // Cluster3D package
00003 //
00004 // CellKG.cxx
00005 //
00006 // CellKG - single cell 
00007 //
00008 // Author:  Katarzyna Grzelak K.Grzelak1@physics.ox.ac.uk
00009 //
00011 
00012 #include "Cluster3D/CellKG.h"
00013 #include "MessageService/MsgService.h" // needed for CVS
00014 #include "Cluster3D/StripKG.h"
00015 #include "Cluster3D/StripListKG.h"
00016 #include <math.h>
00017 
00018 ClassImp(CellKG)
00019 
00020 CVSID("$Id: CellKG.cxx,v 1.4 2007/03/01 17:44:17 rhatcher Exp $");
00021 
00022 CellKG::CellKG():index(0),u(0.),v(0.),z(0.),plane(0),planeview(0){
00023 //
00024 //  Purpose:  Default constructor
00025 //
00026 
00027   MSG("Cluster3D", Msg::kVerbose)
00028     << "Default constructor " << endl;
00029 }
00030 
00031 //............................................................................
00032 
00033 Bool_t CellKG::Create(UInt_t index1, UInt_t index2, StripListKG &all1, Int_t whichOne, vector<CellKG> &allcells, Int_t &cellnb){
00034 //
00035 //  Purpose:  Create a cell
00036 //
00037 
00038   Bool_t unique = true;
00039   
00040   if(all1.GetStripView(index1)==2){
00041     u=all1.GetStripTPos(index1);  
00042     v=all1.GetStripTPos(index2);  
00043   }
00044   else if(all1.GetStripView(index1)==3){
00045     u=all1.GetStripTPos(index2);    
00046     v=all1.GetStripTPos(index1);  
00047   }
00048 
00049   elem1=index1;
00050   elem2=index2;
00051   
00052   if(whichOne==1){
00053     z=all1.GetStripZPos(index1);  
00054     plane=all1.GetStripPlane(index1);  
00055     if(all1.GetStripView(index1)==2){
00056       planeview=2;
00057     }
00058     else if(all1.GetStripView(index1)==3){
00059       planeview=3;
00060     }
00061   }
00062   else if(whichOne==2){
00063     z=all1.GetStripZPos(index2);  
00064     plane=all1.GetStripPlane(index2);  
00065 
00066     if(all1.GetStripView(index2)==2){
00067       planeview=2;
00068     }
00069     else if(all1.GetStripView(index2)==3){
00070       planeview=3;
00071     }
00072   }
00073 
00074    for(UInt_t ii=0; ii<allcells.size(); ++ii){
00075 
00076      if( (( fabs(u - allcells[ii].u)<0.000001)
00077           &&  (fabs(v - allcells[ii].v)<0.000001)
00078          &&  (fabs(z - allcells[ii].z)<0.000001)
00079         ) ){
00080        unique = false;
00081        break;
00082      } 
00083      else{
00084        unique = true;
00085      }
00086    }
00087 
00088    if(unique) {
00089       index=cellnb;
00090       ++cellnb;
00091    }
00092 
00093    return unique;
00094 
00095 }
00096 
00097 //............................................................................
00098 
00099 Bool_t CellKG::Create(UInt_t index, StripListKG &all1, vector<CellKG> &allcells, Int_t &cellnb){
00100 //
00101 //  Purpose:  Create a long cell (from one strip)
00102 //
00103    Bool_t unique = true;
00104 
00105   if(all1.GetStripView(index)==2){
00106     u=all1.GetStripTPos(index);    
00107     v=9999.;
00108     planeview=2;
00109   }
00110   else if(all1.GetStripView(index)==3){
00111     u=9999.;  
00112     v=all1.GetStripTPos(index);  
00113     planeview=3;
00114   }
00115 
00116   elem1=index;
00117   elem2=index;
00118   
00119   z=all1.GetStripZPos(index);  
00120   plane=all1.GetStripPlane(index);  
00121 
00122    for(UInt_t ii=0; ii<allcells.size(); ++ii){
00123 
00124      if( ( planeview==2 && fabs(u - allcells[ii].u)<0.000001)
00125          || (planeview==3 && fabs(v - allcells[ii].v)<0.000001 )
00126          &&  (fabs(z - allcells[ii].z)<0.000001) ){
00127        unique = false;
00128        break;
00129      } 
00130      else{
00131        unique = true;
00132      }
00133    }
00134 
00135    if(unique) {
00136       index=cellnb;
00137       ++cellnb;
00138    }
00139 
00140    return unique;
00141 
00142 }
00143 

Generated on Mon Feb 15 11:06:31 2010 for loon by  doxygen 1.3.9.1