00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "otsdaq-core/MonicelliInterface/Event.h"
00011 #include <sstream>
00012
00013
00014
00015 #define WINDOW 0.005
00016
00017 using namespace monicelli;
00018
00019 ClassImp(Event)
00020
00021
00022 Event::Event (void)
00023 {
00024
00025
00026 }
00027
00028
00029 Event::~Event(void)
00030 {
00031
00032 }
00033
00034
00035 void Event::setRawData (int trig, const plaqMapDef& theRawData)
00036 {
00037 theRawData_ = theRawData;
00038 trig_ = trig ;
00039 }
00040
00041 void Event::clear (void )
00042 {
00043 trig_=0 ;
00044 theRawData_.clear() ;
00045 clusters_.clear() ;
00046 clustersHits_.clear() ;
00047 trackCandidates_.clear() ;
00048 fittedTracksChi2_.clear() ;
00049 fittedTrackResiduals_.clear() ;
00050 fittedTracks_.clear() ;
00051 fittedTracksCovariance_.clear() ;
00052 }
00053
00054 Event::residualsMapDef Event::makeFittedTrackDeviations (int trackNumber)
00055 {
00056 std::stringstream ss_;
00057 fittedTrackDeviations_.clear();
00058 if ( trackCandidates_.size() != fittedTracks_.size() )
00059 {
00060 ss_.str("");
00061 ss_ << "track candidates size: " << trackCandidates_.size()
00062 << " fitted tracks size: " << fittedTracks_.size() ;
00063
00064 }
00065
00066 if( trackNumber < 0 )
00067 {
00068 for( unsigned int i=0; i < trackCandidates_.size(); i++ )
00069 {
00070 this->makeSingleTrackDeviations(i);
00071 }
00072 }
00073 else
00074 {
00075 this->makeSingleTrackDeviations(trackNumber);
00076 }
00077
00078 return fittedTrackDeviations_;
00079 }
00080
00081
00082 void Event::makeSingleTrackDeviations( int trackNum )
00083 {
00084 for(Event::alignedHitsCandidateMapDef::iterator pit = trackCandidates_[trackNum].begin(); pit!= trackCandidates_[trackNum].end() ; pit++)
00085 {
00086 double resX = ( (*pit).second["x"] - fittedTracks_[trackNum][0]*(*pit).second["z"] - fittedTracks_[trackNum][1] ) ;
00087 double resY = ( (*pit).second["y"] - fittedTracks_[trackNum][2]*(*pit).second["z"] - fittedTracks_[trackNum][3] ) ;
00088 fittedTrackDeviations_[trackNum][(*pit).first] = std::make_pair(resX, resY);
00089 }
00090 }
00091
00092
00093 void Event::setClustersHits(const clustersHitsMapDef& clustersHits)
00094 {
00095 clustersHits_ = clustersHits ;
00096 }
00097
00098
00099 void Event::setClusters(const clustersMapDef& clusters)
00100 {
00101 clusters_ = clusters;
00102 }
00103
00104
00105 void Event::addUnconstrainedFittedTrack(unsigned int trackN, std::string detector, const vectorDef& fittedTrack, const matrixDef& covarianceMatrix, double fittedTrackChi2)
00106 {
00107 while(unconstrainedFittedTracks_.size() <= trackN)
00108 {
00109 unconstrainedFittedTracks_ .push_back(std::map<std::string,vectorDef>());
00110 unconstrainedFittedTracksCovariance_.push_back(std::map<std::string,matrixDef>());
00111 unconstrainedFittedTracksChi2_ .push_back(std::map<std::string,double>());
00112 }
00113 unconstrainedFittedTracks_ [trackN][detector] = fittedTrack;
00114 unconstrainedFittedTracksCovariance_[trackN][detector] = covarianceMatrix;
00115 unconstrainedFittedTracksChi2_ [trackN][detector] = fittedTrackChi2;
00116 }