--- /dev/null
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * *
+ * Author: The ALICE Off-line Project. *
+ * Contributors are mentioned in the code where appropriate. *
+ * *
+ * Permission to use, copy, modify and distribute this software and its *
+ * documentation strictly for non-commercial purposes is hereby granted *
+ * without fee, provided that the above copyright notice appears in all *
+ * copies and that both the copyright notice and this permission notice *
+ * appear in the supporting documentation. The authors make no claims *
+ * about the suitability of this software for any purpose. It is *
+ * provided "as is" without express or implied warranty. *
+ **************************************************************************/
+/* $Id$ */
+
+//_________________________________________________________________________
+// To navigate in the AliEn catalogue (very elementary)
+// check here : /afs/cern.ch/user/p/peters/public/README.ALIEN
+//-- Author: Yves Schutz (CERN)
+
+// --- ROOT system ---
+#include "TObjString.h"
+#include "TAlienResult.h"
+
+// --- Standard library ---
+
+// --- AliRoot header files ---
+
+#include "AliPHOSAliEnFile.h"
+
+ClassImp(AliPHOSAliEnFile) ;
+
+//____________________________________________________________________________
+AliPHOSAliEnFile::AliPHOSAliEnFile()
+{
+ // default ctor; Doing initialisation ;
+
+ fGrid = TGrid::Connect("alien://aliendb1.cern.ch:15000/?direct") ;
+ if ( !fGrid )
+ Fatal("ctor", "Cannot connect to alien://aliendb1.cern.ch:15000/?direct") ;
+
+ fRoot = "/alice/production/aliprod" ;
+ if ( !fGrid->OpenDir(fRoot) )
+ Fatal("ctor", "Cannot find directory %s ", fRoot.Data() ) ;
+
+ fYear = "" ;
+ fProd = "" ;
+ fVers = "" ;
+ fType = "" ;
+ fRun = "" ;
+ fEvt = "" ;
+
+ fPath += fRoot ;
+
+}
+
+//____________________________________________________________________________
+AliPHOSAliEnFile::~AliPHOSAliEnFile()
+{
+}
+
+//____________________________________________________________________________
+TString AliPHOSAliEnFile::GetLFN() const
+{
+ TString fileName(Pwd()) ;
+ fileName += "galice.root" ;
+ if ( !fGrid->GetAccessPath(fileName) ) {
+ Warning("GetLFN", "file %s does not exist", fileName.Data()) ;
+ fileName = "" ;
+ }
+ else
+ fileName.Prepend("alien://") ;
+ return fileName ;
+}
+
+//____________________________________________________________________________
+void AliPHOSAliEnFile::Copy(AliPHOSAliEnFile & lfn)
+{
+ //Copy method used by the Copy ctor
+ fRoot = lfn.fRoot ;
+ fYear = lfn.fYear ;
+ fProd = lfn.fProd ;
+ fVers = lfn.fVers ;
+ fType = lfn.fType ;
+ fRun = lfn.fRun ;
+ fEvt = lfn.fEvt ;
+ TObject::Copy(lfn) ;
+}
+
+//____________________________________________________________________________
+void AliPHOSAliEnFile::Help()
+{
+ // Prints information on available lfn's
+
+ Info("Info", " ") ;
+
+}
+
+//____________________________________________________________________________
+void AliPHOSAliEnFile::ListEvents() const
+{
+ // list the available events for the current path and run selected
+
+ char path[80] ;
+ sprintf(path, "%s/%s-%s/%s/%s/%s", fRoot.Data(), fYear.Data(), fProd.Data(), fVers.Data(), fType.Data(), fRun.Data()) ;
+ Info("ListEvents", "Searching %s", path) ;
+ Grid_ResultHandle_t gr = fGrid->Find(path, "galice.root") ;
+ TAlienResult ar(gr) ;
+ ar.Print() ;
+}
+
+//____________________________________________________________________________
+void AliPHOSAliEnFile::ListRuns() const
+{
+ // list the available runs for the current path selected
+
+ char path[80] ;
+ sprintf(path, "%s/%s-%s/%s/%s", fRoot.Data(), fYear.Data(), fProd.Data(), fVers.Data(), fType.Data()) ;
+ Info("ListEvents", "Searching %s", path) ;
+ Grid_ResultHandle_t gr = fGrid->OpenDir(path) ;
+ TAlienResult ar(gr) ;
+ ar.Print() ;
+}
+
+//____________________________________________________________________________
+Bool_t AliPHOSAliEnFile::SetYearProd(TString year, TString prod)
+{
+ // set the year and verifies if the directory exists
+ Bool_t rv = kFALSE ;
+ char tempo[80] ;
+ sprintf(tempo, "/%s-%s", year.Data(), prod.Data()) ;
+
+ TString path(fRoot) ;
+ path += tempo ;
+ if ( !fGrid->OpenDir(path) )
+ Error("ctor", "Cannot find directory %s ", path.Data() ) ;
+ else {
+ rv = kTRUE ;
+ fYear = year ;
+ fProd = prod ;
+ fPath = path ;
+ }
+ return rv ;
+}
+
+//____________________________________________________________________________
+Bool_t AliPHOSAliEnFile::SetVers(TString vers)
+{
+ // set the year and verifies if the directory exists
+ Bool_t rv = kFALSE ;
+ char tempo[80] ;
+ sprintf(tempo, "/%s-%s/%s", fYear.Data(), fProd.Data(), vers.Data()) ;
+ fVers = tempo ;
+
+ TString path(fRoot) ;
+ path += tempo ;
+ if ( !fGrid->OpenDir(path) )
+ Error("ctor", "Cannot find directory %s ", path.Data() ) ;
+ else {
+ rv = kTRUE ;
+ fVers = vers ;
+ fPath = path ;
+ }
+ return rv ;
+}
+
+//____________________________________________________________________________
+Bool_t AliPHOSAliEnFile::SetType(TString type)
+{
+ // set the year and verifies if the directory exists
+ Bool_t rv = kFALSE ;
+ char tempo[80] ;
+ sprintf(tempo, "/%s-%s/%s/%s", fYear.Data(), fProd.Data(), fVers.Data(), type.Data()) ;
+
+ TString path(fRoot) ;
+ path += tempo ;
+ if ( !fGrid->OpenDir(path) )
+ Error("ctor", "Cannot find directory %s ", path.Data() ) ;
+ else {
+ rv = kTRUE ;
+ fType = type ;
+ fPath = path ;
+ }
+ return rv ;
+}
+
+//____________________________________________________________________________
+Bool_t AliPHOSAliEnFile::SetPath(TString year, TString prod, TString vers, TString type)
+{
+ // set the year and verifies if the directory exists
+ Bool_t rv = kFALSE ;
+ char tempo[80] ;
+ sprintf(tempo, "/%s-%s/%s/%s", year.Data(), prod.Data(), vers.Data(), type.Data()) ;
+
+ TString path(fRoot) ;
+ path += tempo ;
+ if ( !fGrid->OpenDir(path) )
+ Error("ctor", "Cannot find directory %s ", path.Data() ) ;
+ else {
+ rv = kTRUE ;
+ fPath = path ;
+ fYear += year ;
+ fProd += prod ;
+ fVers += vers ;
+ fType += type ;
+ }
+ return rv ;
+}
+
+//____________________________________________________________________________
+Bool_t AliPHOSAliEnFile::SetRun(Int_t run)
+{
+ // set the year and verifies if the directory exists
+ Bool_t rv = kFALSE ;
+
+ TString zero("00000") ;
+ TString srun ;
+ srun += run ;
+ Int_t nzero = zero.Length() - srun.Length() ;
+ Int_t index ;
+ for (index = 0 ; index < nzero ; index++)
+ srun.Prepend("0") ;
+
+ char tempo[80] ;
+ sprintf(tempo, "/%s-%s/%s/%s/%s", fYear.Data(), fProd.Data(), fVers.Data(), fType.Data(), srun.Data()) ;
+
+ TString path(fRoot) ;
+ path += tempo ;
+ if ( !fGrid->OpenDir(path) )
+ Error("ctor", "Cannot find directory %s ", path.Data() ) ;
+ else {
+ rv = kTRUE ;
+ fRun = srun ;
+ fPath = path ;
+ }
+ return rv ;
+}
+
+//____________________________________________________________________________
+Bool_t AliPHOSAliEnFile::SetEvt(Int_t evt)
+{
+ // set the year and verifies if the directory exists
+ Bool_t rv = kFALSE ;
+
+ TString zero("00000") ;
+ TString sevt ;
+ sevt += evt ;
+ Int_t nzero = zero.Length() - sevt.Length() ;
+ Int_t index ;
+ for (index = 0 ; index < nzero ; index++)
+ sevt.Prepend("0") ;
+
+ char tempo[80] ;
+ sprintf(tempo, "/%s-%s/%s/%s/%s/%s/", fYear.Data(), fProd.Data(), fVers.Data(), fType.Data(), fRun.Data(), sevt.Data()) ;
+ TString path(fRoot) ;
+ path += tempo ;
+ if ( !fGrid->OpenDir(path) )
+ Error("ctor", "Cannot find directory %s ", path.Data() ) ;
+ else {
+ rv = kTRUE ;
+ fEvt = sevt ;
+ fPath = path ;
+ }
+ return rv ;
+}
+
+
--- /dev/null
+#ifndef ALIPHOSALIENFILE_H
+#define ALIPHOSALIENFILE_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+//_________________________________________________________________________
+// Description of logical filename in AliEn catalogue
+// check here : /afs/cern.ch/user/p/peters/public/README.ALIEN
+//*--
+//*-- Author: Yves Schutz (CERN)
+
+// --- ROOT system ---
+#include "TObject.h"
+#include "TString.h"
+#include "TGrid.h"
+
+// --- AliRoot header files ---
+
+class AliPHOSAliEnFile : public TObject {
+
+ public:
+
+ AliPHOSAliEnFile() ;
+ AliPHOSAliEnFile(AliPHOSAliEnFile & lfn) : TObject(lfn) {
+ lfn.Copy(*this) ;
+ }
+ virtual ~AliPHOSAliEnFile(void) ;
+ virtual void Copy(AliPHOSAliEnFile & lfn) ;
+
+ void ListEvents() const ;
+ void ListRuns() const ;
+ TString GetRootDir() const { return fRoot ; }
+ TString GetLFN() const ;
+ void Help() ;
+
+ Bool_t SetYearProd(TString year, TString prod) ;
+ Bool_t SetVers(TString vers) ;
+ Bool_t SetType(TString type) ;
+
+ Bool_t SetPath(TString year, TString prod, TString vers, TString type) ;
+
+ Bool_t SetRun(Int_t run) ;
+ Bool_t SetEvt(Int_t evt) ;
+
+ TString Pwd() const { return fPath ; }
+
+ AliPHOSAliEnFile & operator = (const AliPHOSAliEnFile & /*rvalue*/) {
+ // assignement operator requested by coding convention but not needed
+ Fatal("operator =", "not implemented") ;
+ return *this ;
+ }
+
+private:
+
+ TGrid * fGrid ; //! connection to alien data catalogue
+ TString fRoot ; //! root directory
+ TString fYear ; //! year of the DC
+ TString fProd ; //! production id
+ TString fVers ; //! aliroot tag version
+ TString fType ; //! event type
+ TString fRun ; //! run number
+ TString fEvt ; //! event number
+ TString fPath ; //! the lfn is fRoot/fYear/fProd/fVers/fType/fRun/fEvt
+
+
+ ClassDef(AliPHOSAliEnFile,1)
+
+ };
+
+#endif // AliPHOSALIENFILE_H
+