ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TArray.h>
#include <TFile.h>
#include <TSystem.h>
#include <TStopwatch.h>
#include <TChain.h>
#include <TGrid.h>
#include <TAlienCollection.h>
#include <TGridCollection.h>
#include <TNtuple.h>
#include <TGeoManager.h>
#include "AliGeomManager.h"
#include "AliAlignmentTracks.h"
#include "AliTrackFitter.h"
#include "AliTrackFitterKalman.h"
#include "AliTrackFitterRieman.h"
#include "AliTrackResidualsFast.h"
#include "AliTrackResidualsChi2.h"
#include "AliTrackResidualsLinear.h"
#endif

TChain *CreateChainFromCollection(const char* xmlfile, const char *treeName,Int_t nFiles);

//**************************************************************************************************************************************************
void HmpAlignNew(Int_t runNum=105160, const Int_t iterations=1,const Int_t minTrackPoint=30,TString fileintro="AliTrackPoints.root",TString geometryfile="geometry.root"){

  Int_t   nFile2Xml = 1;         //on Grid - how many ESD files to chain in xml
  TString xmlName;

  xmlName=Form("run000%d.xml",runNum);

  TChain *chain = new TChain("esdTree");

  TGrid::Connect("alien://");
  chain = CreateChainFromCollection(xmlName.Data(),"esdTree",nFile2Xml);   

  if(!gGeoManager) AliGeomManager::LoadGeometry(geometryfile.Data());

  AliAlignmentTracks *AliAlTrack=new AliAlignmentTracks();

  AliAlTrack->AddESD(chain);
  
  AliAlTrack->ProcessESD(); 

  TStopwatch *timer=new TStopwatch();
  timer->Start();
 
  AliAlTrack->SetPointsFilename(fileintro.Data());

  AliAlTrack->BuildIndex();

//  AliTrackFitter *fitter=new AliTrackFitterKalman();
  AliTrackFitter *fitter=new AliTrackFitterRieman();
  fitter->SetMinNPoints(minTrackPoint);

  AliAlTrack->SetTrackFitter(fitter);

//  AliTrackResiduals *res = new AliTrackResidualsFast();
  AliTrackResiduals *res = new AliTrackResidualsChi2();
  res->SetMinNPoints(1);
  AliAlTrack->SetMinimizer(res);

  for(Int_t i = 0; i<7; i++){
    
  TArrayI tmpId(1); 
  tmpId.AddAt(AliGeomManager::LayerToVolUID(AliGeomManager::kHMPID,i),0);  
  const TArrayI *volId = &tmpId;
   
  AliAlTrack->AlignVolumes(volId, NULL, AliGeomManager::kTPC1,AliGeomManager::kTPC2,iterations);  
 }

  timer->Stop();
  timer->Print();
  return;
}
//*************************************************************************************************************************************************************
TChain *CreateChainFromCollection(const char* xmlfile, const char *treeName,Int_t nFiles)
{
// Create a chain from an alien collection.                                                                          
  
  gSystem->Load("libSTEERBase");
  gSystem->Load("libESD");
  gSystem->Load("libANALYSIS");
  gSystem->Load("libANALYSISalice");  

  
  TAlienCollection *myCollection  = TAlienCollection::Open(xmlfile);

   
   if (!myCollection) {
      ::Error("CreateChainSingle", "Cannot create an AliEn collection from %s", xmlfile) ;
     return NULL ;
   }

  TChain* chain = new TChain(treeName);
  myCollection->Reset() ;
  Int_t iCount = 0;
  while ( myCollection->Next() ){
    if(nFiles!=0)iCount++;
    if(iCount > nFiles)break;
    chain->Add(myCollection->GetTURL("")) ;
    Printf("Adding %s",myCollection->GetTURL(""));
  }
  chain->ls();
  return chain;
}    
 HMPIDFindAlignTracks.C:1
 HMPIDFindAlignTracks.C:2
 HMPIDFindAlignTracks.C:3
 HMPIDFindAlignTracks.C:4
 HMPIDFindAlignTracks.C:5
 HMPIDFindAlignTracks.C:6
 HMPIDFindAlignTracks.C:7
 HMPIDFindAlignTracks.C:8
 HMPIDFindAlignTracks.C:9
 HMPIDFindAlignTracks.C:10
 HMPIDFindAlignTracks.C:11
 HMPIDFindAlignTracks.C:12
 HMPIDFindAlignTracks.C:13
 HMPIDFindAlignTracks.C:14
 HMPIDFindAlignTracks.C:15
 HMPIDFindAlignTracks.C:16
 HMPIDFindAlignTracks.C:17
 HMPIDFindAlignTracks.C:18
 HMPIDFindAlignTracks.C:19
 HMPIDFindAlignTracks.C:20
 HMPIDFindAlignTracks.C:21
 HMPIDFindAlignTracks.C:22
 HMPIDFindAlignTracks.C:23
 HMPIDFindAlignTracks.C:24
 HMPIDFindAlignTracks.C:25
 HMPIDFindAlignTracks.C:26
 HMPIDFindAlignTracks.C:27
 HMPIDFindAlignTracks.C:28
 HMPIDFindAlignTracks.C:29
 HMPIDFindAlignTracks.C:30
 HMPIDFindAlignTracks.C:31
 HMPIDFindAlignTracks.C:32
 HMPIDFindAlignTracks.C:33
 HMPIDFindAlignTracks.C:34
 HMPIDFindAlignTracks.C:35
 HMPIDFindAlignTracks.C:36
 HMPIDFindAlignTracks.C:37
 HMPIDFindAlignTracks.C:38
 HMPIDFindAlignTracks.C:39
 HMPIDFindAlignTracks.C:40
 HMPIDFindAlignTracks.C:41
 HMPIDFindAlignTracks.C:42
 HMPIDFindAlignTracks.C:43
 HMPIDFindAlignTracks.C:44
 HMPIDFindAlignTracks.C:45
 HMPIDFindAlignTracks.C:46
 HMPIDFindAlignTracks.C:47
 HMPIDFindAlignTracks.C:48
 HMPIDFindAlignTracks.C:49
 HMPIDFindAlignTracks.C:50
 HMPIDFindAlignTracks.C:51
 HMPIDFindAlignTracks.C:52
 HMPIDFindAlignTracks.C:53
 HMPIDFindAlignTracks.C:54
 HMPIDFindAlignTracks.C:55
 HMPIDFindAlignTracks.C:56
 HMPIDFindAlignTracks.C:57
 HMPIDFindAlignTracks.C:58
 HMPIDFindAlignTracks.C:59
 HMPIDFindAlignTracks.C:60
 HMPIDFindAlignTracks.C:61
 HMPIDFindAlignTracks.C:62
 HMPIDFindAlignTracks.C:63
 HMPIDFindAlignTracks.C:64
 HMPIDFindAlignTracks.C:65
 HMPIDFindAlignTracks.C:66
 HMPIDFindAlignTracks.C:67
 HMPIDFindAlignTracks.C:68
 HMPIDFindAlignTracks.C:69
 HMPIDFindAlignTracks.C:70
 HMPIDFindAlignTracks.C:71
 HMPIDFindAlignTracks.C:72
 HMPIDFindAlignTracks.C:73
 HMPIDFindAlignTracks.C:74
 HMPIDFindAlignTracks.C:75
 HMPIDFindAlignTracks.C:76
 HMPIDFindAlignTracks.C:77
 HMPIDFindAlignTracks.C:78
 HMPIDFindAlignTracks.C:79
 HMPIDFindAlignTracks.C:80
 HMPIDFindAlignTracks.C:81
 HMPIDFindAlignTracks.C:82
 HMPIDFindAlignTracks.C:83
 HMPIDFindAlignTracks.C:84
 HMPIDFindAlignTracks.C:85
 HMPIDFindAlignTracks.C:86
 HMPIDFindAlignTracks.C:87
 HMPIDFindAlignTracks.C:88
 HMPIDFindAlignTracks.C:89
 HMPIDFindAlignTracks.C:90
 HMPIDFindAlignTracks.C:91
 HMPIDFindAlignTracks.C:92
 HMPIDFindAlignTracks.C:93
 HMPIDFindAlignTracks.C:94
 HMPIDFindAlignTracks.C:95
 HMPIDFindAlignTracks.C:96
 HMPIDFindAlignTracks.C:97
 HMPIDFindAlignTracks.C:98
 HMPIDFindAlignTracks.C:99
 HMPIDFindAlignTracks.C:100
 HMPIDFindAlignTracks.C:101
 HMPIDFindAlignTracks.C:102
 HMPIDFindAlignTracks.C:103
 HMPIDFindAlignTracks.C:104
 HMPIDFindAlignTracks.C:105
 HMPIDFindAlignTracks.C:106
 HMPIDFindAlignTracks.C:107