#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: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