00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012 #include "Cluster3D/CellKG.h"
00013 #include "MessageService/MsgService.h"
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
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
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
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