]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Macro to find HMPID alignments based on AliAlignmentTrack Class.
authordibari <dibari@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 18 Feb 2010 10:28:45 +0000 (10:28 +0000)
committerdibari <dibari@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 18 Feb 2010 10:28:45 +0000 (10:28 +0000)
HMPID/HMPIDFindAlignTracks.C [new file with mode: 0644]

diff --git a/HMPID/HMPIDFindAlignTracks.C b/HMPID/HMPIDFindAlignTracks.C
new file mode 100644 (file)
index 0000000..c5e0afc
--- /dev/null
@@ -0,0 +1,106 @@
+#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;
+}