From 5411185a4d97108e282878acce4d6013294220ac Mon Sep 17 00:00:00 2001
From: wielanek <wielanek>
Date: Sat, 1 Apr 2017 12:50:04 +0200
Subject: [PATCH] Added assignement operator to MpdEvent

---
 mpddata/MpdEvent.cxx | 49 ++++++++++++++++++++++++++++++++++++++++++++
 mpddata/MpdEvent.h   |  1 +
 2 files changed, 50 insertions(+)

diff --git a/mpddata/MpdEvent.cxx b/mpddata/MpdEvent.cxx
index daa797c..7e80f28 100644
--- a/mpddata/MpdEvent.cxx
+++ b/mpddata/MpdEvent.cxx
@@ -42,4 +42,53 @@ MpdTrack *MpdEvent::AddGlobalTrack()
   return new((*fGlobalTracks)[fEventInfoNofGlobalTracks++]) MpdTrack();
 }
 // -------------------------------------------------------------------
+
+MpdEvent& MpdEvent::operator =(const MpdEvent& event) {
+	if(&event==this){
+		return *this;
+	}
+    fRunInfoRunId = event.fRunInfoRunId;
+    fRunInfo_ProductionVersion = event.fRunInfo_ProductionVersion;
+    fRunInfo_CenterOfMassEnergy = event.fRunInfo_CenterOfMassEnergy;
+    fRunInfo_BeamMassNumber[0] = event.fRunInfo_BeamMassNumber[0];
+    fRunInfo_BeamMassNumber[1] = event.fRunInfo_BeamMassNumber[1];
+    fRunInfoMagneticFieldZ = event.fRunInfoMagneticFieldZ;
+    fEventInfo_TriggerMask = event.fEventInfo_TriggerMask;
+    fEventInfoNofGlobalTracks = event.fEventInfoNofGlobalTracks;
+    fEventInfoNofPrimaryTracks = event.fEventInfoNofPrimaryTracks;
+    fEventInfo_NofPositiveTracks = event.fEventInfo_NofPositiveTracks;
+    fEventInfo_NofNegativeTracks = event.fEventInfo_NofNegativeTracks;
+
+    // PrimaryVertices
+
+    PrimaryVerticesX = event.PrimaryVerticesX;
+    PrimaryVerticesY = event.PrimaryVerticesY;
+    PrimaryVerticesZ = event.PrimaryVerticesZ;
+    PrimaryVerticesXerr = event.PrimaryVerticesXerr;
+    PrimaryVerticesYerr = event.PrimaryVerticesYerr;
+    PrimaryVerticesZerr = event.PrimaryVerticesZerr;
+    PrimaryVertices_SumTrackPt = event.PrimaryVertices_SumTrackPt;
+    PrimaryVertices_MeanDip = event.PrimaryVertices_MeanDip;
+    PrimaryVerticesChi2 = event.PrimaryVerticesChi2;
+    PrimaryVertices_RefMultNeg = event.PrimaryVertices_RefMultNeg;
+    PrimaryVertices_RefMultPos = event.PrimaryVertices_RefMultPos;
+    fPrimaryTracks->Clear();
+    fGlobalTracks->Clear();
+    for(int i=0;i<event.fPrimaryTracks->GetEntriesFast();i++){
+    	MpdTrack *from = (MpdTrack*)event.fPrimaryTracks->UncheckedAt(i);
+    	MpdTrack *to = (MpdTrack*)fPrimaryTracks->ConstructedAt(i);
+    	*to = *from;
+    }
+    for(int i=0;i<event.fGlobalTracks->GetEntriesFast();i++){
+    	MpdTrack *from = (MpdTrack*)event.fGlobalTracks->UncheckedAt(i);
+    	MpdTrack *to = (MpdTrack*)fGlobalTracks->ConstructedAt(i);
+    	*to = *from;
+    }
+    return *this;
+}
+
+// -------------------------------------------------------------------
+
 ClassImp(MpdEvent);
+
+
diff --git a/mpddata/MpdEvent.h b/mpddata/MpdEvent.h
index 94a96f5..8cbf924 100644
--- a/mpddata/MpdEvent.h
+++ b/mpddata/MpdEvent.h
@@ -48,6 +48,7 @@ class MpdEvent : public TNamed {
  public:
  
   MpdEvent(); // Default constructor
+  MpdEvent& operator=(const MpdEvent &event);
   virtual ~MpdEvent(); // Destructor
 
   void Reset();
-- 
GitLab