00001 #ifndef __OSCAR_ACCUMULATOR_H__
00002 #define __OSCAR_ACCUMULATOR_H__
00003
00004 #include "parametermap.h"
00005 #include "oscar.h"
00006
00007 class COSCARAccumulator{
00008
00009 public:
00010
00011 COSCARAccumulator( void ): pid1(211), pid2(211),
00012 max_number_pairs(0), totalPairs(0), particleList1(0), particleList2(0),
00013 iSide(0), iOut(1), iLong(2), sqr_q_cm(0.), rinv(0.), qinv(0.0)
00014 {L[0]=0.0;L[1]=0.0;L[2]=1.0;}
00015 virtual ~COSCARAccumulator( void ){}
00016
00017 virtual bool Read( const parameterMap& m );
00018 virtual bool Write( parameterMap& m);
00019
00020 void filterParticles( vector<COSCARLine> plist );
00021 void accumulatePairs( void );
00022 virtual bool pairIsGood( const COSCARLine& p1, const COSCARLine& p2 )=0;
00023 virtual bool addOnePair( const COSCARLine& p1, const COSCARLine& p2 )=0;
00024 virtual bool postProcessPairs( void )=0;
00025 bool likePair( void );
00026
00027 void setCOMVariables( const COSCARLine& p1, const COSCARLine& p2 );
00028 void getSideOutLong( double* inVec, double* outVec );
00029
00030 int pid1, pid2, max_number_pairs, totalPairs;
00031 vector< COSCARLine > particleList1, particleList2;
00032
00033 protected:
00034
00035 int iSide;
00036 int iOut;
00037 int iLong;
00038 double S[3];
00039 double O[3];
00040 double L[3];
00041 double q_lab[4];
00042 double q_cm[4];
00043 double P_lab[4];
00044 double beta[4];
00045 double r_lab[4];
00046 double r_cm[4];
00047 double sqr_q_cm;
00048 double rinv;
00049 double qinv;
00050 };
00051
00052 #endif