-// $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
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()
{
if (aod.EndsWith(".zip")) fgAODFileName.Form("%s#AliAOD.root",aod.Data());
-
}
void AliEveEventManager::AddAODfriend(const TString& friendFileName)
}
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)
}
}
}
-
- fIsOpen = kTRUE;
}
void AliEveEventManager::SetEvent(AliRunLoader *runLoader, AliRawReader *rawReader, AliESDEvent *esd, AliESDfriend *esdf)
Close();
}
+ Info(kEH,"setting it!!! ============================");
+
fRunLoader = runLoader;
fRawReader = rawReader;
fESD = esd;
AfterNewEventLoaded();
if (fAutoLoad) StartAutoLoadTimer();
+
}
Int_t AliEveEventManager::GetMaxEventId(Bool_t refreshESD) const
{
// !!! 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))
{
{
GotoEvent(fEventId + 1);
}
+
+ gSystem->ProcessEvents();
}
void AliEveEventManager::PrevEvent()
return fgRecoParam;
}
+AliSocket* AliEveEventManager::AssertSubscriber()
+{
+ return fgSubSock;
+}
+
Bool_t AliEveEventManager::InitRecoParam()
{
// This is mostly a reap-off from reconstruction
// 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");
}
}
- 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++) {
// 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())
{
StopAutoLoadTimer();
NextEvent();
- if (fAutoLoad && !fExternalCtrl)
+ if (fAutoLoad)
StartAutoLoadTimer();
}
static const TEveException kEH("AliEveEventManager::AfterNewEventLoaded ");
+ Info(kEH, "------------------!!!------------");
+
NewEventDataLoaded();
if (fExecutor)
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()
-// $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;
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();
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);
void NewEventLoaded(); // *SIGNAL*
AliEveMacroExecutor* GetExecutor() const { return fExecutor; }
-
+ void InitOCDB(int runNo=-1);
protected:
Int_t fEventId; // Id of current event.
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();