]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliReconstruction.cxx
The AliESDEvent::GetPrimaryVertex() returns now the best available reconstructed...
[u/mrichter/AliRoot.git] / STEER / AliReconstruction.cxx
index d850b264b0f668108ceeecf1c71b5614eb628fdf..22d6ba81c39ab7bfc39e6183adf1e0010ef621fb 100644 (file)
 
 #include "AliDAQ.h"
 
+#include "AliGRPObject.h"
+
 ClassImp(AliReconstruction)
 
 //_____________________________________________________________________________
@@ -245,10 +247,10 @@ AliReconstruction::AliReconstruction(const char* gAliceFilename) :
   fRecoParam(),
 
   fVertexer(NULL),
+  fDiamondProfileSPD(NULL),
   fDiamondProfile(NULL),
   fDiamondProfileTPC(NULL),
-  fMeanVertexConstraint(kTRUE),
-
+  
   fGRPData(NULL),
 
   fAlignObjArray(NULL),
@@ -340,10 +342,10 @@ AliReconstruction::AliReconstruction(const AliReconstruction& rec) :
   fRecoParam(rec.fRecoParam),
 
   fVertexer(NULL),
+  fDiamondProfileSPD(rec.fDiamondProfileSPD),
   fDiamondProfile(rec.fDiamondProfile),
   fDiamondProfileTPC(rec.fDiamondProfileTPC),
-  fMeanVertexConstraint(rec.fMeanVertexConstraint),
-
+  
   fGRPData(NULL),
 
   fAlignObjArray(rec.fAlignObjArray),
@@ -466,14 +468,16 @@ AliReconstruction& AliReconstruction::operator = (const AliReconstruction& rec)
   } 
     
   fVertexer             = NULL;
+  delete fDiamondProfileSPD; fDiamondProfileSPD = NULL;
+  if (rec.fDiamondProfileSPD) fDiamondProfileSPD = new AliESDVertex(*rec.fDiamondProfileSPD);
   delete fDiamondProfile; fDiamondProfile = NULL;
   if (rec.fDiamondProfile) fDiamondProfile = new AliESDVertex(*rec.fDiamondProfile);
   delete fDiamondProfileTPC; fDiamondProfileTPC = NULL;
   if (rec.fDiamondProfileTPC) fDiamondProfileTPC = new AliESDVertex(*rec.fDiamondProfileTPC);
-  fMeanVertexConstraint = rec.fMeanVertexConstraint;
 
   delete fGRPData; fGRPData = NULL;
-  if (rec.fGRPData) fGRPData = (TMap*)((rec.fGRPData)->Clone());
+  //  if (rec.fGRPData) fGRPData = (TMap*)((rec.fGRPData)->Clone());
+  if (rec.fGRPData) fGRPData = (AliGRPObject*)((rec.fGRPData)->Clone());
 
   delete fAlignObjArray; fAlignObjArray = NULL;
 
@@ -509,6 +513,7 @@ AliReconstruction::~AliReconstruction()
 // clean up
 
   CleanUp();
+  delete fGRPData;
   delete fForcedFieldMap;
   fOptions.Delete();
   if (fAlignObjArray) {
@@ -704,11 +709,16 @@ Bool_t AliReconstruction::MisalignGeometry(const TString& detectors)
     TString loadAlObjsListOfDets = "";
     
     for (Int_t iDet = 0; iDet < fgkNDetectors; iDet++) {
-      if (!IsSelected(fgkDetectorName[iDet], detStr)) continue;
-      loadAlObjsListOfDets += fgkDetectorName[iDet];
-      loadAlObjsListOfDets += " ";
+      if(!IsSelected(fgkDetectorName[iDet], detStr)) continue;
+      if(!strcmp(fgkDetectorName[iDet],"HLT")) continue;
+      if(AliGeomManager::IsModuleInGeom(fgkDetectorName[iDet]))
+      {
+       loadAlObjsListOfDets += fgkDetectorName[iDet];
+       loadAlObjsListOfDets += " ";
+      }
     } // end loop over detectors
-    loadAlObjsListOfDets.Prepend("GRP "); //add alignment objects for non-sensitive modules
+    if(AliGeomManager::IsModuleInGeom("FRAME"))
+      loadAlObjsListOfDets.Prepend("GRP "); //add alignment objects for non-sensitive modules
     AliGeomManager::ApplyAlignObjsFromCDB(loadAlObjsListOfDets.Data());
     AliCDBManager::Instance()->UnloadFromCache("*/Align/*");
   }else{
@@ -864,8 +874,22 @@ Bool_t AliReconstruction::InitGRP() {
   AliCDBEntry* entry = AliCDBManager::Instance()->Get("GRP/GRP/Data");
 
   if (entry) {
-    fGRPData = dynamic_cast<TMap*>(entry->GetObject());
-    entry->SetOwner(0);
+
+    TMap* m = dynamic_cast<TMap*>(entry->GetObject());  // old GRP entry
+
+    if (m) {
+       AliInfo("Found a TMap in GRP/GRP/Data, converting it into an AliGRPObject");
+       m->Print();
+       fGRPData = new AliGRPObject();
+       fGRPData->ReadValuesFromMap(m);
+    }
+
+    else {
+       AliInfo("Found an AliGRPObject in GRP/GRP/Data, reading it");
+       fGRPData = dynamic_cast<AliGRPObject*>(entry->GetObject());  // new GRP entry
+       entry->SetOwner(0);
+    }
+
     AliCDBManager::Instance()->UnloadFromCache("GRP/GRP/Data");
   }
 
@@ -874,45 +898,44 @@ Bool_t AliReconstruction::InitGRP() {
      return kFALSE;
   }
 
-  TObjString *lhcState=
-    dynamic_cast<TObjString*>(fGRPData->GetValue("fLHCState"));
-  if (!lhcState) {
+  TString lhcState = fGRPData->GetLHCState();
+  if (lhcState==AliGRPObject::GetInvalidString()) {
     AliError("GRP/GRP/Data entry:  missing value for the LHC state ! Using UNKNOWN");
+    lhcState = "UNKNOWN";
   }
 
-  TObjString *beamType=
-    dynamic_cast<TObjString*>(fGRPData->GetValue("fAliceBeamType"));
-  if (!beamType) {
+  TString beamType = fGRPData->GetBeamType();
+  if (beamType==AliGRPObject::GetInvalidString()) {
     AliError("GRP/GRP/Data entry:  missing value for the beam type ! Using UNKNOWN");
+    beamType = "UNKNOWN";
   }
 
-  TObjString *beamEnergyStr=
-    dynamic_cast<TObjString*>(fGRPData->GetValue("fAliceBeamEnergy"));
-  if (!beamEnergyStr) {
+  Float_t beamEnergy = fGRPData->GetBeamEnergy();
+  if (beamEnergy==AliGRPObject::GetInvalidFloat()) {
     AliError("GRP/GRP/Data entry:  missing value for the beam energy ! Using 0");
+    beamEnergy = 0;
   }
 
-  TObjString *runType=
-    dynamic_cast<TObjString*>(fGRPData->GetValue("fRunType"));
-  if (!runType) {
+  TString runType = fGRPData->GetRunType();
+  if (runType==AliGRPObject::GetInvalidString()) {
     AliError("GRP/GRP/Data entry:  missing value for the run type ! Using UNKNOWN");
+    runType = "UNKNOWN";
   }
 
-  TObjString *activeDetectors=
-    dynamic_cast<TObjString*>(fGRPData->GetValue("fDetectorMask"));
-  if (!activeDetectors) {
+  Int_t activeDetectors = fGRPData->GetDetectorMask();
+  if (activeDetectors==AliGRPObject::GetInvalidUInt()) {
     AliError("GRP/GRP/Data entry:  missing value for the detector mask ! Using 1074790399");
+    activeDetectors = 1074790399;
   }
 
-  fRunInfo = new AliRunInfo(lhcState ? lhcState->GetString().Data() : "UNKNOWN",
-                           beamType ? beamType->GetString().Data() : "UNKNOWN",
-                           beamEnergyStr ? beamEnergyStr->GetString().Atof() : 0,
-                           runType  ? runType->GetString().Data()  : "UNKNOWN",
-                           activeDetectors ? activeDetectors->GetString().Atoi() : 1074790399);
+  fRunInfo = new AliRunInfo(lhcState, beamType, beamEnergy, runType, activeDetectors);
+
+  fRunInfo->Dump();
+
 
   // Process the list of active detectors
-  if (activeDetectors && activeDetectors->GetString().IsDigit()) {
-    UInt_t detMask = activeDetectors->GetString().Atoi();
+  if (activeDetectors) {
+    UInt_t detMask = activeDetectors;
     fLoadCDB.Form("%s %s %s %s",
                  fRunLocalReconstruction.Data(),
                  fRunTracking.Data(),
@@ -923,6 +946,11 @@ Bool_t AliReconstruction::InitGRP() {
     fFillESD = MatchDetectorList(fFillESD,detMask);
     fQADetectors = MatchDetectorList(fQADetectors,detMask);
     fLoadCDB = MatchDetectorList(fLoadCDB,detMask);
+    if (!((detMask >> AliDAQ::DetectorID("ITSSPD")) & 0x1)) {
+      // switch off the vertexer
+      AliInfo("SPD is not in the list of active detectors. Vertexer switched off.");
+      fRunVertexFinder = kFALSE;
+    }
   }
 
   AliInfo("===================================================================================");
@@ -942,6 +970,32 @@ Bool_t AliReconstruction::InitGRP() {
     Bool_t ok = kTRUE;
 
     // L3
+    Float_t l3Current = fGRPData->GetL3Current((AliGRPObject::Stats)0);
+    if (l3Current == AliGRPObject::GetInvalidFloat()) {
+      AliError("GRP/GRP/Data entry:  missing value for the L3 current !");
+      ok = kFALSE;
+    }
+
+    Char_t l3Polarity = fGRPData->GetL3Polarity();
+    if (l3Polarity == AliGRPObject::GetInvalidChar()) {
+      AliError("GRP/GRP/Data entry:  missing value for the L3 polarity !");
+      ok = kFALSE;
+    }
+
+    // Dipole
+    Float_t diCurrent = fGRPData->GetDipoleCurrent((AliGRPObject::Stats)0);
+    if (diCurrent == AliGRPObject::GetInvalidFloat()) {
+      AliError("GRP/GRP/Data entry:  missing value for the dipole current !");
+      ok = kFALSE;
+    }
+
+    Char_t diPolarity = fGRPData->GetDipolePolarity();
+    if (diPolarity == AliGRPObject::GetInvalidChar()) {
+      AliError("GRP/GRP/Data entry:  missing value for the dipole polarity !");
+      ok = kFALSE;
+    }
+
+    /*
     TObjString *l3Current=
        dynamic_cast<TObjString*>(fGRPData->GetValue("fL3Current"));
     if (!l3Current) {
@@ -954,7 +1008,7 @@ Bool_t AliReconstruction::InitGRP() {
       AliError("GRP/GRP/Data entry:  missing value for the L3 polarity !");
       ok = kFALSE;
     }
-
+    
     // Dipole
     TObjString *diCurrent=
        dynamic_cast<TObjString*>(fGRPData->GetValue("fDipoleCurrent"));
@@ -968,11 +1022,15 @@ Bool_t AliReconstruction::InitGRP() {
       AliError("GRP/GRP/Data entry:  missing value for the dipole polarity !");
       ok = kFALSE;
     }
+    */
 
     if (ok) { 
-       Float_t l3Cur=TMath::Abs(atof(l3Current->GetName()));
-       Float_t diCur=TMath::Abs(atof(diCurrent->GetName()));
-       Float_t l3Pol=atof(l3Polarity->GetName());
+       Float_t l3Cur=TMath::Abs(l3Current);
+       Float_t diCur=TMath::Abs(diCurrent);
+       Float_t l3Pol=l3Polarity;
+       //       Float_t l3Cur=TMath::Abs(atof(l3Current->GetName()));
+       //Float_t diCur=TMath::Abs(atof(diCurrent->GetName()));
+       //Float_t l3Pol=atof(l3Polarity->GetName());
        Float_t factor=1.;
        if (l3Pol != 0.) factor=-1.;
     
@@ -988,21 +1046,26 @@ Bool_t AliReconstruction::InitGRP() {
 
   }
 
-  //*** Get the diamond profile from OCDB
+  //*** Get the diamond profiles from OCDB
+  entry = AliCDBManager::Instance()->Get("GRP/Calib/MeanVertexSPD");
+  if (entry) {
+    fDiamondProfileSPD = dynamic_cast<AliESDVertex*> (entry->GetObject());  
+  } else {
+     AliError("No SPD diamond profile found in OCDB!");
+  }
+
   entry = AliCDBManager::Instance()->Get("GRP/Calib/MeanVertex");
   if (entry) {
-    if (fMeanVertexConstraint)
-      fDiamondProfile = dynamic_cast<AliESDVertex*> (entry->GetObject());  
+    fDiamondProfile = dynamic_cast<AliESDVertex*> (entry->GetObject());  
   } else {
      AliError("No diamond profile found in OCDB!");
   }
 
   entry = AliCDBManager::Instance()->Get("GRP/Calib/MeanVertexTPC");
   if (entry) {
-    if (fMeanVertexConstraint)
-      fDiamondProfileTPC = dynamic_cast<AliESDVertex*> (entry->GetObject());  
+    fDiamondProfileTPC = dynamic_cast<AliESDVertex*> (entry->GetObject());  
   } else {
-     AliError("No diamond profile found in OCDB!");
+     AliError("No TPC diamond profile found in OCDB!");
   }
 
   return kTRUE;
@@ -1056,6 +1119,7 @@ Bool_t AliReconstruction::Run(const char* input)
     SlaveBegin(NULL);
     if (GetAbort() != TSelector::kContinue) return kFALSE;
     //******* The loop over events
+    AliInfo("Starting looping over events");
     Int_t iEvent = 0;
     while ((iEvent < fRunLoader->GetNumberOfEvents()) ||
           (fRawReader && fRawReader->NextEvent())) {
@@ -1247,7 +1311,6 @@ void AliReconstruction::SlaveBegin(TTree*)
   AliSysInfo::AddStamp("LoadLoader");
  
   ftVertexer = new AliVertexerTracks(AliTracker::GetBz());
-  if(fDiamondProfile && fMeanVertexConstraint) ftVertexer->SetVtxStart(fDiamondProfile);
 
   // get vertexer
   if (fRunVertexFinder && !CreateVertexer()) {
@@ -1284,21 +1347,46 @@ void AliReconstruction::SlaveBegin(TTree*)
   ftree = new TTree("esdTree", "Tree with ESD objects");
   fesd = new AliESDEvent();
   fesd->CreateStdContent();
+  if (fWriteESDfriend) {
+    fesdf = new AliESDfriend();
+    TBranch *br=ftree->Branch("ESDfriend.","AliESDfriend", &fesdf);
+    br->SetFile("AliESDfriends.root");
+    fesd->AddObject(fesdf);
+  }
   fesd->WriteToTree(ftree);
+  ftree->GetUserInfo()->Add(fesd);
 
   fhlttree = new TTree("HLTesdTree", "Tree with HLT ESD objects");
   fhltesd = new AliESDEvent();
   fhltesd->CreateStdContent();
-  fhltesd->WriteToTree(fhlttree);
 
-
-  if (fWriteESDfriend) {
-    fesdf = new AliESDfriend();
-    TBranch *br=ftree->Branch("ESDfriend.","AliESDfriend", &fesdf);
-    br->SetFile("AliESDfriends.root");
-    fesd->AddObject(fesdf);
+  // read the ESD template from CDB
+  // HLT is allowed to put non-std content to its ESD, the non-std
+  // objects need to be created before invocation of WriteToTree in
+  // order to create all branches. Initialization is done from an
+  // ESD layout template in CDB
+  AliCDBManager* man = AliCDBManager::Instance();
+  AliCDBPath hltESDConfigPath("HLT/ConfigHLT/esdLayout");
+  AliCDBEntry* hltESDConfig=NULL;
+  if (man->GetId(hltESDConfigPath)!=NULL &&
+      (hltESDConfig=man->Get(hltESDConfigPath))!=NULL) {
+    AliESDEvent* pESDLayout=dynamic_cast<AliESDEvent*>(hltESDConfig->GetObject());
+    if (pESDLayout) {
+      // init all internal variables from the list of objects
+      pESDLayout->GetStdContent();
+
+      // copy content and create non-std objects
+      *fhltesd=*pESDLayout;
+      fhltesd->Reset();
+    } else {
+      AliError(Form("error setting hltEsd layout from %s: invalid object type",
+                   hltESDConfigPath.GetPath().Data()));
+    }
   }
 
+  fhltesd->WriteToTree(fhlttree);
+  fhlttree->GetUserInfo()->Add(fhltesd);
+
   ProcInfo_t ProcInfo;
   gSystem->GetProcInfo(&ProcInfo);
   AliInfo(Form("Current memory usage %d %d", ProcInfo.fMemResident, ProcInfo.fMemVirtual));
@@ -1450,7 +1538,10 @@ Bool_t AliReconstruction::ProcessEvent(Int_t iEvent)
     fesd->SetMagneticField(AliTracker::GetBz());
     fhltesd->SetMagneticField(AliTracker::GetBz());
 
-    
+    // Set most probable pt, for B=0 tracking
+    // Get the global reco-params. They are atposition 16 inside the array of detectors in fRecoParam
+    const AliGRPRecoParam *grpRecoParam = dynamic_cast<const AliGRPRecoParam*>(fRecoParam.GetDetRecoParam(fgkNDetectors));
+    if (grpRecoParam) AliExternalTrackParam::SetMostProbablePt(grpRecoParam->GetMostProbablePt());
     
     // Fill raw-data error log into the ESD
     if (fRawReader) FillRawDataErrorLog(iEvent,fesd);
@@ -1538,7 +1629,7 @@ Bool_t AliReconstruction::ProcessEvent(Int_t iEvent)
       ok = kFALSE;
       if (tpcTrack)
        ok = AliTracker::
-         PropagateTrackTo(tpcTrack,kRadius,track->GetMass(),kMaxStep,kTRUE);
+         PropagateTrackTo(tpcTrack,kRadius,track->GetMass(),kMaxStep,kFALSE);
 
       if (ok) {
        Int_t n=trkArray.GetEntriesFast();
@@ -1550,7 +1641,7 @@ Bool_t AliReconstruction::ProcessEvent(Int_t iEvent)
       if (track->IsOn(AliESDtrack::kITSrefit)) continue;
 
       AliTracker::
-         PropagateTrackTo(track,kRadius,track->GetMass(),kMaxStep,kTRUE);
+         PropagateTrackTo(track,kRadius,track->GetMass(),kMaxStep,kFALSE);
       track->RelateToVertex(fesd->GetPrimaryVertexSPD(), kBz, kVeryBig);
 
     }
@@ -1567,11 +1658,9 @@ Bool_t AliReconstruction::ProcessEvent(Int_t iEvent)
     }
 
     if (runVertexFinderTracks) {
-      // Get the global reco-params. They are atposition 16 inside the array of detectors in fRecoParam
-      const AliGRPRecoParam *grpRecoParam = dynamic_cast<const AliGRPRecoParam*>(fRecoParam.GetDetRecoParam(fgkNDetectors));
-
        // TPC + ITS primary vertex
        ftVertexer->SetITSMode();
+       ftVertexer->SetConstraintOff();
        // get cuts for vertexer from AliGRPRecoParam
        if (grpRecoParam) {
         Int_t nCutsVertexer = grpRecoParam->GetVertexerTracksNCuts();
@@ -1579,16 +1668,13 @@ Bool_t AliReconstruction::ProcessEvent(Int_t iEvent)
         grpRecoParam->GetVertexerTracksCutsITS(cutsVertexer);
         ftVertexer->SetCuts(cutsVertexer);
         delete [] cutsVertexer; cutsVertexer = NULL; 
-       }
-       if(fDiamondProfile && fMeanVertexConstraint) {
-        ftVertexer->SetVtxStart(fDiamondProfile);
-       } else {
-        ftVertexer->SetConstraintOff();
+        if(fDiamondProfile && grpRecoParam->GetVertexerTracksConstraintITS())
+          ftVertexer->SetVtxStart(fDiamondProfile);
        }
        AliESDVertex *pvtx=ftVertexer->FindPrimaryVertex(fesd);
        if (pvtx) {
           if (pvtx->GetStatus()) {
-             fesd->SetPrimaryVertex(pvtx);
+             fesd->SetPrimaryVertexTracks(pvtx);
              for (Int_t i=0; i<ntracks; i++) {
                 AliESDtrack *t = fesd->GetTrack(i);
                  t->RelateToVertex(pvtx, kBz, kVeryBig);
@@ -1598,6 +1684,7 @@ Bool_t AliReconstruction::ProcessEvent(Int_t iEvent)
 
        // TPC-only primary vertex
        ftVertexer->SetTPCMode();
+       ftVertexer->SetConstraintOff();
        // get cuts for vertexer from AliGRPRecoParam
        if (grpRecoParam) {
         Int_t nCutsVertexer = grpRecoParam->GetVertexerTracksNCuts();
@@ -1605,11 +1692,8 @@ Bool_t AliReconstruction::ProcessEvent(Int_t iEvent)
         grpRecoParam->GetVertexerTracksCutsTPC(cutsVertexer);
         ftVertexer->SetCuts(cutsVertexer);
         delete [] cutsVertexer; cutsVertexer = NULL; 
-       }
-       if(fDiamondProfileTPC && fMeanVertexConstraint) {
-        ftVertexer->SetVtxStart(fDiamondProfileTPC);
-       } else {
-        ftVertexer->SetConstraintOff();
+        if(fDiamondProfileTPC && grpRecoParam->GetVertexerTracksConstraintTPC())
+          ftVertexer->SetVtxStart(fDiamondProfileTPC);
        }
        pvtx=ftVertexer->FindPrimaryVertex(&trkArray,selectedIdx);
        if (pvtx) {
@@ -1653,8 +1737,8 @@ Bool_t AliReconstruction::ProcessEvent(Int_t iEvent)
     }
 
     if (fWriteESDfriend) {
-      fesdf->~AliESDfriend();
-      new (fesdf) AliESDfriend(); // Reset...
+      //      fesdf->~AliESDfriend();
+      //  new (fesdf) AliESDfriend(); // Reset...
       fesd->GetESDfriend(fesdf);
     }
     ftree->Fill();
@@ -1689,7 +1773,9 @@ Bool_t AliReconstruction::ProcessEvent(Int_t iEvent)
        fReconstructor[iDet]->SetRecoParam(NULL);
     }
        
-    fQASteer->Increment() ; 
+  if (fRunQA || fRunGlobalQA) 
+      fQASteer->Increment() ; 
+  
     return kTRUE;
 }
 
@@ -1707,9 +1793,6 @@ void AliReconstruction::SlaveTerminate()
     fRunLoader->Write(0, TObject::kOverwrite);
   }
 
-  ftree->GetUserInfo()->Add(fesd);
-  fhlttree->GetUserInfo()->Add(fhltesd);
-  
   const TMap *cdbMap = AliCDBManager::Instance()->GetStorageMap();      
   const TList *cdbList = AliCDBManager::Instance()->GetRetrievedIds();  
                 
@@ -1895,7 +1978,7 @@ Bool_t AliReconstruction::RunVertexFinder(AliESDEvent*& esd)
       fLoader[0]->LoadRecPoints();
       TTree* cltree = fLoader[0]->TreeR();
       if (cltree) {
-       if(fDiamondProfile) fVertexer->SetVtxStart(fDiamondProfile);
+       if(fDiamondProfileSPD) fVertexer->SetVtxStart(fDiamondProfileSPD);
        vertex = fVertexer->FindVertexForCurrentEvent(cltree);
       }
       else {
@@ -2521,6 +2604,7 @@ Bool_t AliReconstruction::CreateVertexer()
 Bool_t AliReconstruction::CreateTrackers(const TString& detectors)
 {
 // create the trackers
+       AliInfo("Creating trackers");
 
   TString detStr = detectors;
   for (Int_t iDet = 0; iDet < fgkNDetectors; iDet++) {
@@ -2571,14 +2655,13 @@ void AliReconstruction::CleanUp()
   ftVertexer = NULL;
   
   if(!(AliCDBManager::Instance()->GetCacheFlag())) {
+    delete fDiamondProfileSPD;
+    fDiamondProfileSPD = NULL;
     delete fDiamondProfile;
     fDiamondProfile = NULL;
     delete fDiamondProfileTPC;
     fDiamondProfileTPC = NULL;
   }
-  delete fGRPData;
-  fGRPData = NULL;
-
   delete fRunLoader;
   fRunLoader = NULL;
   delete fRawReader;
@@ -2604,7 +2687,7 @@ void AliReconstruction::WriteAlignmentData(AliESDEvent* esd)
       AliESDtrack *track = esd->GetTrack(itrack);
       Int_t nsp = 0;
       Int_t idx[200];
-      for (Int_t iDet = 3; iDet >= 0; iDet--) {// TOF, TRD, TPC, ITS clusters
+      for (Int_t iDet = 5; iDet >= 0; iDet--) {// TOF, TRD, TPC, ITS clusters
           nsp += track->GetNcls(iDet);
 
           if (iDet==0) { // ITS "extra" clusters
@@ -2617,7 +2700,7 @@ void AliReconstruction::WriteAlignmentData(AliESDEvent* esd)
        AliTrackPointArray *sp = new AliTrackPointArray(nsp);
        track->SetTrackPointArray(sp);
        Int_t isptrack = 0;
-       for (Int_t iDet = 3; iDet >= 0; iDet--) {
+       for (Int_t iDet = 5; iDet >= 0; iDet--) {
          AliTracker *tracker = fTracker[iDet];
          if (!tracker) continue;
          Int_t nspdet = track->GetClusters(iDet,idx);
@@ -2838,7 +2921,7 @@ Bool_t AliReconstruction::InitAliEVE()
   AliInfo(Form("Loading AliEVE macro: %s",macroStr.Data()));
   if (gROOT->LoadMacro(macroStr.Data()) != 0) return kFALSE;
 
-  gROOT->ProcessLine("if (!gAliEveEvent) {gAliEveEvent = new AliEveEventManager();gAliEveEvent->AddNewEventCommand(\"alieve_online_on_new_event()\");gEve->AddEvent(gAliEveEvent);};");
+  gROOT->ProcessLine("if (!AliEveEventManager::GetMaster()){new AliEveEventManager();AliEveEventManager::GetMaster()->AddNewEventCommand(\"alieve_online_on_new_event()\");gEve->AddEvent(AliEveEventManager::GetMaster());};");
   gROOT->ProcessLine("alieve_online_init()");
 
   return kTRUE;
@@ -2853,7 +2936,7 @@ void AliReconstruction::RunAliEVE()
   // successful initialization of AliEVE.
 
   AliInfo("Running AliEVE...");
-  gROOT->ProcessLine(Form("gAliEveEvent->SetEvent((AliRunLoader*)%p,(AliRawReader*)%p,(AliESDEvent*)%p);",fRunLoader,fRawReader,fesd));
+  gROOT->ProcessLine(Form("AliEveEventManager::GetMaster()->SetEvent((AliRunLoader*)%p,(AliRawReader*)%p,(AliESDEvent*)%p);",fRunLoader,fRawReader,fesd));
   gSystem->Run();
 }