EvtOrthogVector Class Reference

#include <EvtOrthogVector.hh>

List of all members.

Public Member Functions

 EvtOrthogVector (int n, std::vector< double > *vectors)
 ~EvtOrthogVector ()
std::vector< double > getOrthogVector ()

Private Member Functions

void findOrthog (int dim, std::vector< int > invect, std::vector< double > *vectors)
int findEvenOddSwaps ()

Private Attributes

int _dimen
std::vector< int > _holder
std::vector< double > _orthogVector


Detailed Description

Definition at line 27 of file EvtOrthogVector.hh.


Constructor & Destructor Documentation

EvtOrthogVector::EvtOrthogVector ( int  n,
std::vector< double > *  vectors 
)

Definition at line 30 of file EvtOrthogVector.cc.

References _dimen, _holder, _orthogVector, findOrthog(), genRecEmupikp::i, and subSeperate::temp.

00030                                                                  {
00031 
00032   _dimen=n;
00033   _holder.resize(n);
00034 
00035   std::vector<int> temp;
00036   
00037   int i;
00038   for (i=0;i<n;i++) {
00039     _orthogVector.push_back(0.);
00040     temp.push_back(i);
00041   }
00042 
00043   findOrthog(_dimen,temp, vectors);
00044 
00045 }

EvtOrthogVector::~EvtOrthogVector (  ) 

Definition at line 47 of file EvtOrthogVector.cc.

00047                                  {
00048 }


Member Function Documentation

int EvtOrthogVector::findEvenOddSwaps (  )  [private]

Definition at line 103 of file EvtOrthogVector.cc.

References _dimen, _holder, genRecEmupikp::i, ganga-rec::j, and subSeperate::temp.

Referenced by findOrthog().

00103                                       {
00104 
00105   std::vector<int> temp(_dimen);
00106 
00107   int i,j,nSwap;
00108   for (i=0; i<_dimen; i++) temp[i]=_holder[i];
00109 
00110   nSwap=0;
00111   for (i=0; i<(_dimen-1); i++) {
00112     for (j=i+1; j<_dimen; j++) {
00113 
00114       if ( temp[i]>temp[j] ) {
00115         int duh=temp[j];
00116         temp[j]=temp[i];
00117         temp[i]=duh;
00118         nSwap+=1;
00119       }
00120     }
00121   }
00122   nSwap-= (nSwap/2)*2;
00123 
00124   if ( nSwap ) return -1;
00125   
00126   return 1;
00127 
00128 }

void EvtOrthogVector::findOrthog ( int  dim,
std::vector< int >  invect,
std::vector< double > *  vectors 
) [private]

Definition at line 50 of file EvtOrthogVector.cc.

References _dimen, _holder, _orthogVector, findEvenOddSwaps(), genRecEmupikp::i, ganga-rec::j, sign(), and subSeperate::temp.

Referenced by EvtOrthogVector().

00051                                                         {
00052 
00053 
00054   if ( dim==2 ) {
00055     _holder[0]=invect[0];
00056     _holder[1]=invect[1];
00057     int sign=findEvenOddSwaps();
00058     {
00059       double addition=1;
00060       int i;
00061       for (i=1; i<_dimen; i++){
00062         addition*=vectors[i-1][_holder[i]];
00063       }
00064       addition*=sign;
00065       _orthogVector[_holder[0]]+=addition;
00066     }
00067     
00068     _holder[0]=invect[1];
00069     _holder[1]=invect[0];
00070     
00071     {
00072       double addition=1;
00073       int i;
00074       for (i=1; i<_dimen; i++){
00075         addition*=vectors[i-1][_holder[i]];
00076       }
00077       addition*=sign;
00078       _orthogVector[_holder[0]]-=addition;
00079     }
00080     
00081     return;
00082   }
00083   else{
00084     std::vector<int> temp((2*dim));
00085 
00086     int i;
00087     for (i=0; i<dim; i++) temp[i]=invect[i];
00088     for (i=0; i<dim; i++) temp[i+dim]=invect[i];
00089 
00090     for (i=0; i<dim; i++) {
00091       _holder[dim-1]=temp[dim-1+i];
00092       std::vector<int> tempDim((dim-1));
00093 
00094       int j;
00095       for (j=0; j<(dim-1); j++) tempDim[j]=temp[j+i];
00096       findOrthog(dim-1, tempDim, vectors); 
00097     }
00098   }
00099  
00100   return;
00101 }

std::vector<double> EvtOrthogVector::getOrthogVector (  )  [inline]

Definition at line 36 of file EvtOrthogVector.hh.

References _orthogVector.

Referenced by EvtCGCoefSingle::init().

00036 {return _orthogVector;}


Member Data Documentation

int EvtOrthogVector::_dimen [private]

Definition at line 41 of file EvtOrthogVector.hh.

Referenced by EvtOrthogVector(), findEvenOddSwaps(), and findOrthog().

std::vector<int> EvtOrthogVector::_holder [private]

Definition at line 42 of file EvtOrthogVector.hh.

Referenced by EvtOrthogVector(), findEvenOddSwaps(), and findOrthog().

std::vector<double> EvtOrthogVector::_orthogVector [private]

Definition at line 46 of file EvtOrthogVector.hh.

Referenced by EvtOrthogVector(), findOrthog(), and getOrthogVector().


Generated on Tue Nov 29 23:19:08 2016 for BOSS_7.0.2 by  doxygen 1.4.7