Added the client side code AliEve
authorquark <quark@cern.ch>
Fri, 6 Jun 2014 15:20:01 +0000 (17:20 +0200)
committerquark <quark@cern.ch>
Fri, 6 Jun 2014 15:20:01 +0000 (17:20 +0200)
EVE/CMakelibEveBase.pkg
EVE/EveBase/AliEveEventManager.cxx
EVE/EveBase/AliEveEventManager.h
MONITOR/AliRecoServer.cxx
MONITOR/CMakelibMONITORzmq.pkg

index 758ed30..8314fad 100644 (file)
@@ -80,6 +80,11 @@ set ( DHDR  EveBase/EveBaseLinkDef.h)
 
 set ( EINCLUDE  RAW ITS TPC TPC/Base TPC/Sim EVE/EveBase STEER/STEER STEER/AOD STEER/CDB STEER/ESD STEER/STEERBase)
 
+if(ZEROMQ_FOUND)
+       set ( ELIBS ${ELIBS} MONITOR MONITORzmq ${ZEROMQ_LIBRARY} )
+       set ( CXXFLAGS  "-DZMQ ${CXXFLAGS}") 
+endif(ZEROMQ_FOUND)
+
 set ( EXPORT 
   EveBase/AliEveUtil.h
   EveBase/AliEveFileDialog.h
index 264edb6..5e8b000 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: AliEveEventManager.cxx 59994 2012-12-14 10:03:06Z quark $
+// $Id: AliEveEventManager.cxx 64557 2013-10-16 20:03:08Z hristov $
 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
 
 /**************************************************************************
 #include <TString.h>
 #include <TMap.h>
 
+#ifdef ZMQ
+#include <AliNetMessage.h>
+#include <AliSocket.h>
+#endif
+
 //==============================================================================
 //==============================================================================
 // AliEveEventManager
@@ -115,27 +120,25 @@ Bool_t   AliEveEventManager::fgUniformField = kFALSE;
 AliEveEventManager* AliEveEventManager::fgMaster  = 0;
 AliEveEventManager* AliEveEventManager::fgCurrent = 0;
 
-//zmq::context_t* AliEveEventManager::fgSubContext=0;
-//zmq::socket_t* AliEveEventManager::fgSubSock=0;
+zmq::context_t* AliEveEventManager::fgSubContext=0;
+AliSocket* AliEveEventManager::fgSubSock=0;
 
-bool AliEveEventManager::ConnectToServer()
+bool AliEveEventManager::ConnectToServer(const char* host, int port)
 {
-/*
-       // make a zeromq socket
-    fgSubContext = new zmq::context_t(1);
-    fgSubSock = new zmq::socket_t(*fgSubContext, ZMQ_SUB);
-    fgSubSock->setsockopt(ZMQ_SUBSCRIBE, "", 0); //filter, strlen (filter));
-    fgSubSock->connect("tcp://*:5024");
-    return true;
-    */
-}
 
-/*
-zmq::socket_t* AliEveEventManager::AssertSubscriber()
-{
-       return fgCurrent->fgSubSock;
+#ifdef ZMQ
+       // make a zeromq socket
+    fgSubContext = new zmq::context_t;
+    fgSubSock = new AliSocket(&*fgSubContext, ZMQ_SUB);
+    fgSubSock->Subscribe("");
+    fgSubSock->Connect(Form("%s:%d", host, port) );
+#else
+       fgSubContext=0;
+       fgSubSock =0;
+#endif
+       
+  return true;
 }
-*/
 
 void AliEveEventManager::InitInternals()
 {
@@ -256,7 +259,6 @@ void AliEveEventManager::SetAODFileName(const TString& aod)
     
     if (aod.EndsWith(".zip")) fgAODFileName.Form("%s#AliAOD.root",aod.Data());
     
-    
 }
 
 void AliEveEventManager::AddAODfriend(const TString& friendFileName)
@@ -582,13 +584,22 @@ void AliEveEventManager::Open()
         }
         else
         {
-            throw (kEH + "unknown run number.");
+            fExternalCtrl = kTRUE;
+             fEventId = 0;
+            return;
         }
     }
 
     // Initialize OCDB ... only in master event-manager
+               InitOCDB(runNo);
 
-    if (this == fgMaster)
+    fIsOpen = kTRUE;
+}
+
+void AliEveEventManager::InitOCDB(int runNo)
+{
+               static const TEveException kEH("AliEveEventManager::InitOCDB ");
+    //if (this == fgMaster)
     {
         AliCDBManager* cdb = AliCDBManager::Instance();
         if (cdb->IsDefaultStorageSet() == kTRUE)
@@ -644,8 +655,6 @@ void AliEveEventManager::Open()
             }
         }
     }
-
-    fIsOpen = kTRUE;
 }
 
 void AliEveEventManager::SetEvent(AliRunLoader *runLoader, AliRawReader *rawReader, AliESDEvent *esd, AliESDfriend *esdf)
@@ -662,6 +671,8 @@ void AliEveEventManager::SetEvent(AliRunLoader *runLoader, AliRawReader *rawRead
         Close();
     }
 
+                       Info(kEH,"setting it!!! ============================");
+
     fRunLoader = runLoader;
     fRawReader = rawReader;
     fESD       = esd;
@@ -679,6 +690,7 @@ void AliEveEventManager::SetEvent(AliRunLoader *runLoader, AliRawReader *rawRead
     AfterNewEventLoaded();
 
     if (fAutoLoad) StartAutoLoadTimer();
+    
 }
 
 Int_t AliEveEventManager::GetMaxEventId(Bool_t refreshESD) const
@@ -942,9 +954,48 @@ void AliEveEventManager::NextEvent()
     {
         // !!! This should really go somewhere else. It is done in GotoEvent(),
         // so here we should do it in SetEvent().
-        DestroyElements();
-        gSystem->ExitLoop();
-
+          DestroyElements();
+        
+                       #ifdef ZMQ
+                       AliNetMessage *mess;
+                       fgSubSock->Recv(mess);
+        
+        
+                                   AliESDEvent* data = (AliESDEvent*)(mess->ReadObjectAny(AliESDEvent::Class()));
+
+               if (data){
+                   printf("Got DATA:\n");
+
+                   printf("Event Number in File:%d Run:%d ObjectsInList:%d\n", data->GetEventNumberInFile(),  data->GetRunNumber(), data->GetList()->GetEntries());
+                       
+                       TTree* tree= new TTree("esdTree", "esdTree");
+                   data->WriteToTree(tree);
+                   tree-> Fill();
+                   //tree->Write();
+                       
+                       printf("======================= Tree has %d entries\n", tree->GetEntries());
+                       
+                       AliESDEvent* event= new AliESDEvent();
+                                                               event->ReadFromTree(tree);
+                                                       
+                                               tree->GetEntry(0);
+                       
+                       InitOCDB(event->GetRunNumber());
+                       
+                       printf("======================= setting event to %d\n", fEventId);
+                       SetEvent(0,0,event,0);
+                   
+                           delete event;
+                       delete tree;
+                       
+               }
+               else
+                  printf("NO DATA!!!\n");
+                                    
+               delete data; data=0;
+               delete mess; mess=0;
+               #endif
+               
     }
     else if ((fESDTree!=0) || (fHLTESDTree!=0))
     {
@@ -958,6 +1009,8 @@ void AliEveEventManager::NextEvent()
     {
         GotoEvent(fEventId + 1);
     }
+    
+     gSystem->ProcessEvents();
 }
 
 void AliEveEventManager::PrevEvent()
@@ -1242,6 +1295,11 @@ AliRecoParam* AliEveEventManager::AssertRecoParams()
     return fgRecoParam;
 }
 
+AliSocket* AliEveEventManager::AssertSubscriber()
+{
+       return fgSubSock;
+}
+
 Bool_t AliEveEventManager::InitRecoParam()
 {
     // This is mostly a reap-off from reconstruction
@@ -1249,7 +1307,7 @@ Bool_t AliEveEventManager::InitRecoParam()
     // the available reco-param objects from there.
 
     fgRecoParam = new AliRecoParam;
-    const Int_t  kNDetectors = 15;
+    const Int_t  kNDetectors = 14;
 
     static const TEveException kEH("AliEveEventManager::InitRecoParam");
 
@@ -1289,7 +1347,7 @@ Bool_t AliEveEventManager::InitRecoParam()
         }
     }
 
-    const char* fgkDetectorName[kNDetectors] = {"ITS", "TPC", "TRD", "TOF", "PHOS", "HMPID", "EMCAL", "MUON", "FMD", "ZDC", "PMD", "T0", "VZERO", "ACORDE", "AD" };
+    const char* fgkDetectorName[kNDetectors] = {"ITS", "TPC", "TRD", "TOF", "PHOS", "HMPID", "EMCAL", "MUON", "FMD", "ZDC", "PMD", "T0", "VZERO", "ACORDE" };
 
 
     for (Int_t iDet = 0; iDet < kNDetectors; iDet++) {
@@ -1542,7 +1600,9 @@ void AliEveEventManager::AutoLoadNextEvent()
     // Called from auto-load timer, so it has to be public.
     // Do NOT call it directly.
 
-    static const TEveException kEH("AliEveEventManager::AutoLoadNextEvent ");
+         static const TEveException kEH("AliEveEventManager::AutoLoadNextEvent ");
+         
+               Info(kEH, "called!");
 
     if ( ! fAutoLoadTimerRunning || ! fAutoLoadTimer->HasTimedOut())
     {
@@ -1552,7 +1612,7 @@ void AliEveEventManager::AutoLoadNextEvent()
 
     StopAutoLoadTimer();
     NextEvent();
-    if (fAutoLoad && !fExternalCtrl)
+    if (fAutoLoad)
         StartAutoLoadTimer();
 }
 
@@ -1569,6 +1629,8 @@ void AliEveEventManager::AfterNewEventLoaded()
 
     static const TEveException kEH("AliEveEventManager::AfterNewEventLoaded ");
 
+  Info(kEH, "------------------!!!------------");
+                      
     NewEventDataLoaded();
 
     if (fExecutor)
@@ -1594,10 +1656,13 @@ void AliEveEventManager::AfterNewEventLoaded()
                 Error(kEH, "Getting event %d for sub-event-manager '%s' failed: '%s'.",
                       fEventId, fgCurrent->GetName(), exc.Data());
             }
+              Info(kEH, "------------------!!! while() gEve->SetCurrentEvent() ------------");
         }
         fgCurrent = fgMaster;
+        Info(kEH, "------------------!!! while() gEve->SetCurrentEvent(MASTER) ------------");
         gEve->SetCurrentEvent(fgMaster);
     }
+    
 }
 
 void AliEveEventManager::NewEventDataLoaded()
index 30cc4b7..bfcf572 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: AliEveEventManager.h 59763 2012-11-27 12:42:41Z hristov $
+// $Id: AliEveEventManager.h 64557 2013-10-16 20:03:08Z hristov $
 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
 
 /**************************************************************************
 
 #include <AliESDEvent.h>
 
-//#include <zmq.hpp>
 
+#ifdef ZMQ
+#include <zmq.hpp>
+#else
+namespace zmq{
+       class context_t;
+}
+#endif
 
 class AliEveMacroExecutor;
 class AliEveEventSelector; 
+class AliSocket;
 
 class AliRunLoader;
 class AliESDEvent;
@@ -102,8 +109,7 @@ public:
     TString       GetEventInfoVertical()   const;
     const AliEventInfo*        GetEventInfo();
 
-               static bool ConnectToServer(); // connect to the events server
-               //static zmq::socket_t* AssertSubscriber();
+               static bool ConnectToServer(const char* host, int port); // connect to the events server
 
     static Int_t  CurrentEventId();
 
@@ -122,6 +128,8 @@ public:
     static AliMagF*      AssertMagField();
     static TGeoManager*  AssertGeometry();
     static AliRecoParam* AssertRecoParams();
+    
+    static AliSocket* AssertSubscriber();
 
     static AliEveEventManager* AddDependentManager(const TString& name, const TString& path);
     static AliEveEventManager* GetDependentManager(const TString& name);
@@ -154,7 +162,7 @@ public:
     void          NewEventLoaded();      // *SIGNAL*
 
     AliEveMacroExecutor* GetExecutor() const { return fExecutor; }
-
+           void InitOCDB(int runNo=-1);
 protected:
     Int_t         fEventId;            // Id of current event.
 
@@ -215,13 +223,14 @@ protected:
     static AliRecoParam* fgRecoParam;
     static Bool_t        fgUniformField;  // Track with uniform field.
 
-               //static zmq::context_t* fgSubContext;
-               //static zmq::socket_t* fgSubSock;
+               static zmq::context_t* fgSubContext;
+               static AliSocket* fgSubSock;
 private:
     AliEveEventManager(const AliEveEventManager&);            // Not implemented
     AliEveEventManager& operator=(const AliEveEventManager&); // Not implemented
 
     void InitInternals();
+
     void StartAutoLoadTimer();
     void StopAutoLoadTimer();
 
index 125c513..e11a2c4 100644 (file)
@@ -34,7 +34,11 @@ AliRecoServer::AliRecoServer()
   fSettings(0),
   fRecoTh(0)
 {
-       fContext = new zmq::context_t;
+#if (ZMQ_VERSION_MAJOR>=3)
+               fContext = new zmq::context_t;
+#else
+               fContext = new zmq::context_t(1);
+#endif /* (ZMQ_VERSION_MAJOR>=3) */
 }
 
 AliRecoServer::~AliRecoServer()
index 15bf9a4..18fbe55 100644 (file)
@@ -62,3 +62,9 @@ set (ELIBS ${ELIBS} ${ZEROMQ_LIBRARIES} )
 
 # this must be set in a better way
 set ( ELIBSDIR ${ELIBSDIR}  /usr/lib64)
+
+set (EXPORT 
+               AliSocket.h
+               AliNetMessage.h
+       AliThreadedSocket.h
+  )