ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2009, 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.                  *
 **************************************************************************/

/////////////////////////////////////////////////////////////
//
// AliAnalysisTask to extract from ESD tracks the AliTrackPointArrays
// with ITS points for selected tracks. This are the input data for alignment
//
// Author: A.Dainese, andrea.dainese@pd.infn.it
/////////////////////////////////////////////////////////////

#include <TTree.h>
#include <TFile.h>
#include <TSystem.h>
#include <TChain.h>
#include <TNtuple.h>
#include <TList.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TMap.h>
#include <TVector3.h>
#include <TGeoManager.h>
#include <TRandom.h>

#include "AliLog.h"
#include "AliCDBEntry.h"
#include "AliGeomManager.h"
#include "AliITSReconstructor.h"
#include "AliITSAlignMille2Module.h"
#include "AliITSgeomTGeo.h"
#include "AliTrackPointArray.h"
#include "AliESDInputHandler.h"
#include "AliESDVertex.h"
#include "AliESDtrack.h"
#include "AliESDEvent.h"
#include "AliESDfriend.h"
#include "AliAnalysisTaskSE.h"
#include "AliAnalysisManager.h"
#include "AliAlignmentDataFilterITS.h"


ClassImp(AliAlignmentDataFilterITS)


//________________________________________________________________________
AliAlignmentDataFilterITS::AliAlignmentDataFilterITS():
AliAnalysisTaskSE(),
fOnlySPDFO(kFALSE),
fDownsamplelowpt(kFALSE),
fGeometryFileName("geometry.root"),
fITSRecoParam(0),
fESD(0),
fListOfHistos(0),
fspTree(0),
fHistNevents(0),
fHistNpoints(0),
fHistPt(0),
fHistLayer0(0),
fHistLayer1(0),
fHistLayer2(0),
fHistLayer3(0),
fHistLayer4(0),
fHistLayer5(0),
fntExtra(0),
fntCosmicMatching(0)
{
  // Constructor
}

//________________________________________________________________________
AliAlignmentDataFilterITS::AliAlignmentDataFilterITS(const char *name):
AliAnalysisTaskSE(name),
fOnlySPDFO(kFALSE),
fDownsamplelowpt(kFALSE),
fGeometryFileName("geometry.root"),
fITSRecoParam(0),
fESD(0),
fListOfHistos(0),
fspTree(0),
fHistNevents(0),
fHistNpoints(0),
fHistPt(0),
fHistLayer0(0),
fHistLayer1(0),
fHistLayer2(0),
fHistLayer3(0),
fHistLayer4(0),
fHistLayer5(0),
fntExtra(0),
fntCosmicMatching(0)
{
  // Constructor

  // Define output slots here

  // Output slot #1 writes into a TTree
  DefineOutput(1,TTree::Class());  //My private output
  // Output slot #2 writes into a TList
  DefineOutput(2,TList::Class());  //My private output
}

//________________________________________________________________________
AliAlignmentDataFilterITS::~AliAlignmentDataFilterITS()
{
  // Destructor
  if (fListOfHistos) {
    delete fListOfHistos;
    fListOfHistos = 0;
  }
  if (fspTree) {
    delete fspTree;
    fspTree = 0;
  }
  if (fHistNevents) {
    delete fHistNevents;
    fHistNevents = 0;
  }
  if (fHistNpoints) {
    delete fHistNpoints;
    fHistNpoints = 0;
  }
  if (fHistPt) {
    delete fHistPt;
    fHistPt = 0;
  }
  if (fHistLayer0) {
    delete fHistLayer0;
    fHistLayer0 = 0;
  }
  if (fHistLayer1) {
    delete fHistLayer1;
    fHistLayer1 = 0;
  }
  if (fHistLayer2) {
    delete fHistLayer2;
    fHistLayer2 = 0;
  }
  if (fHistLayer3) {
    delete fHistLayer3;
    fHistLayer3 = 0;
  }
  if (fHistLayer4) {
    delete fHistLayer4;
    fHistLayer4 = 0;
  }
  if (fHistLayer5) {
    delete fHistLayer5;
    fHistLayer5 = 0;
  }
  if (fntExtra) {
    delete fntExtra;
    fntExtra = 0;
  }
  if (fntCosmicMatching) {
    delete fntCosmicMatching;
    fntCosmicMatching = 0;
  }
}  


//________________________________________________________________________
void AliAlignmentDataFilterITS::UserCreateOutputObjects()
{
  // Create the output container
  //
  
  // load the geometry  
  if(!gGeoManager) {    
    printf("AliAlignmentDataFilterITS::CreateOutputObjects(): loading geometry from %s\n",fGeometryFileName.Data());
    AliGeomManager::LoadGeometry(fGeometryFileName.Data());
    if(!gGeoManager) { 
      printf("AliAlignmentDataFilterITS::CreateOutputObjects(): no geometry loaded \n");
      return;
    }
  }

  // Several histograms are more conveniently managed in a TList
  fListOfHistos = new TList();
  fListOfHistos->SetOwner();

  fHistNevents = new TH1F("fHistNevents", "Number of processed events; N events; bin",5,-0.5,4.5);
  fHistNevents->Sumw2();
  fHistNevents->SetMinimum(0);
  fListOfHistos->Add(fHistNevents);

  fHistNpoints = new TH1F("fHistNpoints", "Number of AliTrackPoints per track; N points; tracks",25,-0.5,24.5);
  fHistNpoints->Sumw2();
  fHistNpoints->SetMinimum(0);
  fListOfHistos->Add(fHistNpoints);

  fHistPt = new TH1F("fHistPt", "p_{t} of tracks; p_{t} [GeV/c]; tracks",100,0,50);
  fHistPt->Sumw2();
  fHistPt->SetMinimum(0);
  fListOfHistos->Add(fHistPt);


  Float_t zmax=14.;
  Int_t nbinsphi=20,nbinsz=4;
  fHistLayer0 = new TH2F("fHistLayer0","Points in layer inner SPD; global   #phi; global z [cm]",nbinsphi,-3.14,3.14,nbinsz,-zmax,zmax);
  fListOfHistos->Add(fHistLayer0);
  zmax=14.;
  nbinsphi=40;nbinsz=4;
  fHistLayer1 = new TH2F("fHistLayer1","Points in layer outer SPD; global   #phi; global z [cm]",nbinsphi,-3.14,3.14,nbinsz,-zmax,zmax);
  fListOfHistos->Add(fHistLayer1);
  zmax=22.;
  nbinsphi=14;nbinsz=6;
  fHistLayer2 = new TH2F("fHistLayer2","Points in layer inner SDD; global   #phi; global z [cm]",nbinsphi,-3.14,3.14,nbinsz,-zmax,zmax);
  fListOfHistos->Add(fHistLayer2);
  zmax=29.5;
  nbinsphi=22;nbinsz=8;
  fHistLayer3 = new TH2F("fHistLayer3","Points in layer outer SDD; global   #phi; global z [cm]",nbinsphi,-3.14,3.14,nbinsz,-zmax,zmax);
  fListOfHistos->Add(fHistLayer3);
  zmax=45.;
  nbinsphi=34;nbinsz=23;
  fHistLayer4 = new TH2F("fHistLayer4","Points in layer inner SSD; global   #phi; global z [cm]",nbinsphi,-3.14,3.14,nbinsz,-zmax,zmax);
  fListOfHistos->Add(fHistLayer4);
  zmax=51.;
  nbinsphi=38;nbinsz=26;
  fHistLayer5 = new TH2F("fHistLayer5","Points in layer outer SSD; global   #phi; global z [cm]",nbinsphi,-3.14,3.14,nbinsz,-zmax,zmax);
  fListOfHistos->Add(fHistLayer5);


  fntExtra = new TNtuple("fntExtra","extra clusters in ITS","ncls:layer:ladder:volid:phi:x:y:z:xloc:zloc:dxy:dz:d0mu:z0mu:pt");
  fListOfHistos->Add(fntExtra);

  fntCosmicMatching = new TNtuple("fntCosmicMatching","cosmic tracks matching in ITS","ncls1:ncls2:pt1:pt2:sigmad01:sigmad02:sigmaz01:sigmaz02:dxy:dz:phimu:thetamu:d0mu:z0mu");
  fListOfHistos->Add(fntCosmicMatching);

  fspTree = new TTree("spTree","Tree with ITS track points");
  AliTrackPointArray *array = 0;
  AliESDVertex *vertex = 0;
  Float_t curv=0,curverr=0,runNumber=0;
  TObjString *itsaligndata = 0;
  TObjString *itscalibrespsdd = 0;
  fspTree->Branch("SP","AliTrackPointArray",&array);
  fspTree->Branch("vertex","AliESDVertex",&vertex);
  fspTree->Branch("curv",&curv);
  fspTree->Branch("curverr",&curverr);
  fspTree->Branch("run",&runNumber);
  fspTree->Branch("ITSAlignData",&itsaligndata);
  fspTree->Branch("ITSCalibRespSDD",&itscalibrespsdd);

  return;
}

//________________________________________________________________________
void AliAlignmentDataFilterITS::UserExec(Option_t */*option*/)
{
  // Execute analysis for current event:
  // write ITS AliTrackPoints for selected tracks to fspTree
  
  // check the geometry  
  if(!gGeoManager) { 
    printf("AliAlignmentDataFilterITS::Exec(): no geometry loaded \n");
    return;
  }

  // check if we have AliITSRecoParam
  if(!GetRecoParam()) {
    if(!fITSRecoParam) {
      printf("AliAlignmentDataFilterITS::Exec(): no AliITSRecoParam\n");
      return;
    }
  }

  fESD = dynamic_cast<AliESDEvent*>(InputEvent());
  if(!fESD) {
    printf("AliAlignmentDataFilterITS::Exec(): no ESD \n");
    return;
  } 

  //AliESDfriend *esdfriend = (AliESDfriend*)(fESD->FindListObject("AliESDfriend"));

  //if(!esdfriend) printf("AliAlignmentDataFilterITS::Exec(): no ESDfriend \n");
  //fESD->SetESDfriend(esdfriend);

  // Post the data for slot 0
  fHistNevents->Fill(0);


  // write field value to spTree UserInfo
  if(!((fspTree->GetUserInfo())->FindObject("BzkGauss"))) {
    Double_t bz=fESD->GetMagneticField();
    TString bzString; bzString+=bz;
    TObjString *bzObjString = new TObjString(bzString);
    TList *bzList = new TList();	 
    bzList->SetOwner(1);	 
    bzList->SetName("BzkGauss");	 
    bzList->Add(bzObjString);
    fspTree->GetUserInfo()->Add(bzList);
  }

  // write OCDB info to spTree UserInfo
  if(!((fspTree->GetUserInfo())->FindObject("cdbList"))) {
    TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
    if(!tree) {
      printf("ERROR: Could not read chain from input slot 0\n");
    } else {
      // Get the OCDB path and the list of OCDB objects used for reco 
      TMap *cdbMap = (TMap*)(tree->GetTree()->GetUserInfo())->FindObject("cdbMap");
      TList *cdbList = (TList*)(tree->GetTree()->GetUserInfo())->FindObject("cdbList");
      
      //cdbList->Print();
      // write the list to the user info of the output tree
      if(!fspTree) {
	printf("ERROR: fspTree does not exist\n");
      } else {
	TMap *cdbMapCopy = new TMap(cdbMap->GetEntries());	 
	cdbMapCopy->SetOwner(1);	 
	cdbMapCopy->SetName("cdbMap");	 
	TIter iter1(cdbMap->GetTable());	 
	
	TPair* pair = 0;	 
	while((pair = dynamic_cast<TPair*> (iter1.Next()))){	 
	  TObjString* keyStr = dynamic_cast<TObjString*> (pair->Key());	 
	  TObjString* valStr = dynamic_cast<TObjString*> (pair->Value());	 
	  if(keyStr && valStr) cdbMapCopy->Add(new TObjString(keyStr->GetName()), new TObjString(valStr->GetName()));	 
	}	 
	
	TList *cdbListCopy = new TList();	 
	cdbListCopy->SetOwner(1);	 
	cdbListCopy->SetName("cdbList");	 
	
	TIter iter2(cdbList);	 
	
	TObjString* cdbEntry=0;
	while((cdbEntry =(TObjString*)(iter2.Next()))) {
	  cdbListCopy->Add(new TObjString(*cdbEntry));
	}	 
	cdbListCopy->Print();


	fspTree->GetUserInfo()->Add(cdbMapCopy);	 
	fspTree->GetUserInfo()->Add(cdbListCopy);
      }
    }
  }



  // Process event as Cosmic or Collision
  if(fESD->GetEventSpecie()<=1) {
    printf("AliAlignmentDataFilterITS::Exec(): event specie not set !\n");
    if(GetRecoParam()->GetAlignFilterCosmics()) {
      FilterCosmic(fESD);
    } else {
      FilterCollision(fESD);
    }
  } else if(fESD->GetEventSpecie()==8) {
    FilterCosmic(fESD);
  } else {
    FilterCollision(fESD);
  }

  PostData(2,fListOfHistos);

  return;
}

//________________________________________________________________________
void AliAlignmentDataFilterITS::FilterCosmic(const AliESDEvent *esd)
{
  // Extract ITS AliTrackPoints for Cosmics (check angular matching
  // of top and bottom track, merge the two tracks, if requested)
  //

  // Set branch addresses for space points tree
  AliTrackPointArray *arrayForTree=0;
  AliESDVertex *vertexForTree=0;
  Float_t curv,curverr,runNumber;
  TObjString *itsaligndata=0;
  TObjString *itscalibrespsdd = 0;
  fspTree->SetBranchAddress("SP",&arrayForTree);
  fspTree->SetBranchAddress("vertex",&vertexForTree);
  fspTree->SetBranchAddress("curv",&curv);
  fspTree->SetBranchAddress("curverr",&curverr);
  fspTree->SetBranchAddress("run",&runNumber);
  fspTree->SetBranchAddress("ITSAlignData",&itsaligndata);
  fspTree->SetBranchAddress("ITSCalibRespSDD",&itscalibrespsdd);


  runNumber = (Float_t)esd->GetRunNumber();
  Int_t uid=10000+esd->GetEventNumberInFile();

  TTree* esdTree = dynamic_cast<TTree*> (GetInputData(0));
  if(!esdTree) return;
  // Get the list of OCDB objects used for reco 
  TList *cdbList = (TList*)(esdTree->GetTree()->GetUserInfo())->FindObject("cdbList");
  TIter iter2(cdbList);	     
  TObjString* cdbEntry=0;
  TString cdbEntryString;
  while((cdbEntry =(TObjString*)(iter2.Next()))) {
    cdbEntryString = cdbEntry->GetString();
    if(cdbEntryString.Contains("ITS/Align/Data")) {
      itsaligndata = new TObjString(*cdbEntry);
      itsaligndata->SetString(itsaligndata->GetString());
    }
    if(cdbEntryString.Contains("ITS/Calib/RespSDD")) {
      itscalibrespsdd = new TObjString(*cdbEntry);
      itscalibrespsdd->SetString(itscalibrespsdd->GetString());
    }
  }	 


  TString triggeredClass = esd->GetFiredTriggerClasses(); 
  if(fOnlySPDFO && !triggeredClass.Contains("C0SCO-ABCE-NOPF-CENT")) return;


  Int_t ntracks = esd->GetNumberOfTracks();
  if(ntracks<2) return;

  if(esd->GetPrimaryVertexSPD()->GetNContributors()<0) return;

  Double_t vtxpos[3]; esd->GetPrimaryVertexSPD()->GetXYZ(vtxpos);

  Int_t *goodtracksArray = new Int_t[ntracks];
  Float_t *phiArray = new Float_t[ntracks];
  Float_t *thetaArray = new Float_t[ntracks];
  Int_t *nclsArray = new Int_t[ntracks];
  Int_t ngt=0;
  Int_t itrack=0;
  for (itrack=0; itrack < ntracks; itrack++) {
    AliESDtrack *track = esd->GetTrack(itrack);
    if (!track) continue;


    if(track->GetNcls(0)<GetRecoParam()->GetAlignFilterMinITSPoints()) continue;

    if((GetRecoParam()->GetAlignFilterOnlyITSSATracks()) && track->GetNcls(1)>0) continue;
    if((GetRecoParam()->GetAlignFilterOnlyITSTPCTracks()) && track->GetNcls(1)==0) continue;

    Float_t phi = track->GetAlpha()+TMath::ASin(track->GetSnp());
    Float_t theta = 0.5*TMath::Pi()-TMath::ATan(track->GetTgl());

    if(track->Pt()<GetRecoParam()->GetAlignFilterMinPt() || 
       track->Pt()>GetRecoParam()->GetAlignFilterMaxPt()) continue;

    goodtracksArray[ngt] = itrack;
    phiArray[ngt]        = phi;
    thetaArray[ngt]      = theta;
    nclsArray[ngt]       = track->GetNcls(0);
    ngt++;
  }

  if(ngt<2) {
    delete [] goodtracksArray; goodtracksArray=0;
    delete [] phiArray; phiArray=0;
    delete [] thetaArray; thetaArray=0;
    delete [] nclsArray; nclsArray=0;
    return;
  }

  // check matching of the two tracks from the muon
  Float_t min = 10000000.;
  Int_t maxCls = 0;
  Int_t good1 = -1, good2 = -1;
  for(Int_t itr1=0; itr1<ngt-1; itr1++) {
    for(Int_t itr2=itr1+1; itr2<ngt; itr2++) {
      Float_t deltatheta = TMath::Abs(TMath::Pi()-thetaArray[itr1]-thetaArray[itr2]);
      if(deltatheta>GetRecoParam()->GetAlignFilterMaxMatchingAngle()) continue;
      Float_t deltaphi = TMath::Abs(TMath::Abs(phiArray[itr1]-phiArray[itr2])-TMath::Pi());
      if(deltaphi>GetRecoParam()->GetAlignFilterMaxMatchingAngle()) continue;
      if(nclsArray[itr1]+nclsArray[itr2] > maxCls) {
	maxCls = nclsArray[itr1]+nclsArray[itr2];
	min = deltatheta+deltaphi;
	good1 = goodtracksArray[itr1];
	good2 = goodtracksArray[itr2];
      } else if(nclsArray[itr1]+nclsArray[itr2] == maxCls) {
	if(deltatheta+deltaphi < min) {
	  min = deltatheta+deltaphi;
	  good1 = goodtracksArray[itr1];
	  good2 = goodtracksArray[itr2];
	}
      }
    }
  }
  
  delete [] goodtracksArray; goodtracksArray=0;
  delete [] phiArray; phiArray=0;
  delete [] thetaArray; thetaArray=0;
  delete [] nclsArray; nclsArray=0;

  if(good1<0) return;
  AliDebug(2,"ok track matching");
  
  // track1 will be the inward track (top)
  // track2 the outward (bottom)
  AliESDtrack *track1=0; 
  AliESDtrack *track2=0;
  AliESDtrack *track = esd->GetTrack(good1);
  if(track->Py()>0) { 
    track1 = esd->GetTrack(good1);
    track2 = esd->GetTrack(good2);
  } else {
    track1 = esd->GetTrack(good2);
    track2 = esd->GetTrack(good1);
  }

  AliTrackPoint point;
  const AliTrackPointArray *array=0;
  Int_t ipt,volId,modId,layerId,lay,lad,det;
  Int_t jpt=0;
  Bool_t layerOK[6][2]; 
  Int_t nclsTrk[2]={0,0};

  for(Int_t l1=0;l1<6;l1++) for(Int_t l2=0;l2<2;l2++) layerOK[l1][l2]=kFALSE;
    
  for(itrack=0; itrack<2; itrack++) {
    if(itrack==0) {
      track = track1;
    } else {
      track = track2;
    }
    array = track->GetTrackPointArray();
    if(!array) {
      AliWarning("No tracks points avaialble");
      continue;
    }
    for(ipt=0; ipt<array->GetNPoints(); ipt++) {
      array->GetPoint(point,ipt);
      volId = point.GetVolumeID();
      if(volId<=0) continue;
      layerId = AliGeomManager::VolUIDToLayer(volId,modId);
      AliDebug(2,Form("%d %d %d  %f\n",ipt,layerId-1,volId,TMath::Sqrt(point.GetX()*point.GetX()+point.GetY()*point.GetY())));
      if(point.IsExtra() && 
	 (GetRecoParam()->GetAlignFilterSkipExtra())) continue;
      if(layerId<1 || layerId>6) continue;
      if(!GetRecoParam()->GetAlignFilterUseLayer(layerId-1)) continue;
      // check minAngleWrtITSModulePlanes
      Double_t p[3]; track->GetDirection(p);
      TVector3 pvec(p[0],p[1],p[2]);
      Double_t rot[9]; AliGeomManager::GetOrigRotation(volId,rot);
      TVector3 normvec(rot[1],rot[4],rot[7]);
      Double_t angle = pvec.Angle(normvec);
      if(angle>0.5*TMath::Pi()) angle = TMath::Pi()-angle;
      angle = 0.5*TMath::Pi()-angle;
      if(angle<GetRecoParam()->GetAlignFilterMinAngleWrtModulePlanes()) continue;
      layerOK[layerId-1][itrack]=kTRUE;
      jpt++;
      nclsTrk[itrack]++;
    }
  }
  AliDebug(2,Form("nClsTrk1 %d nClsTrk2 %d\n",nclsTrk[0],nclsTrk[1]));
    
  // read ITS cluster maps
  Int_t map1[6],map2[6];
  for(Int_t ilay=0;ilay<6;ilay++) {
    map1[ilay]=0; map2[ilay]=0;
    if(track1->HasPointOnITSLayer(ilay)) map1[ilay]=1;
    if(track2->HasPointOnITSLayer(ilay)) map2[ilay]=1;
  }
  AliDebug(2,Form("ITS map 1: %d %d %d %d %d %d pt %f\n",map1[0],map1[1],map1[2],map1[3],map1[4],map1[5],track1->Pt()));
  AliDebug(2,Form("ITS map 2: %d %d %d %d %d %d pt %f\n",map2[0],map2[1],map2[2],map2[3],map2[4],map2[5],track2->Pt()));
  Int_t idx1[12],idx2[12];
  track1->GetITSclusters(idx1);
  track2->GetITSclusters(idx2);
  AliDebug(2,Form("cls idx 1 %d %d %d %d %d %d %d %d %d %d %d %d\n",idx1[0],idx1[1],idx1[2],idx1[3],idx1[4],idx1[5],idx1[6],idx1[7],idx1[8],idx1[9],idx1[10],idx1[11]));
  AliDebug(2,Form("cls idx 2 %d %d %d %d %d %d %d %d %d %d %d %d\n",idx2[0],idx2[1],idx2[2],idx2[3],idx2[4],idx2[5],idx2[6],idx2[7],idx2[8],idx2[9],idx2[10],idx2[11]));
  

  if(jpt<GetRecoParam()->GetAlignFilterMinITSPointsMerged()) return;
  AliDebug(2,Form(" Total points %d, accepted\n",jpt));  
  fHistNpoints->Fill(jpt);
  fHistPt->Fill(0.5*(track1->Pt()+track2->Pt()));
  
  Float_t d0z0mu[2];
  track1->GetDZ(0,0,0,esd->GetMagneticField(),d0z0mu);
  //printf("d0mu %f  z0mu %f\n",d0z0mu[0],d0z0mu[1]);

  vertexForTree = new AliESDVertex(*(esd->GetPrimaryVertexSPD()));
  vertexForTree->SetID(0);

  Float_t dzOverlap[2];
  Float_t curvArray[2],curverrArray[2];
  Double_t globExtra[3],locExtra[3];
  if(GetRecoParam()->GetAlignFilterCosmicMergeTracks()) {
    arrayForTree = new AliTrackPointArray(jpt);
    arrayForTree->SetUniqueID(uid);
  }
  jpt=0;
  for(itrack=0; itrack<2; itrack++) {
    if(itrack==0) {
      track = track1;
    } else {
      track = track2;
    }
    curvArray[itrack] = track->GetC(esd->GetMagneticField());
    curverrArray[itrack] = TMath::Sqrt(track->GetSigma1Pt2())*track->GetC(esd->GetMagneticField())/track->OneOverPt();

    if(!(GetRecoParam()->GetAlignFilterCosmicMergeTracks())) {
      jpt=0;
      arrayForTree = new AliTrackPointArray(nclsTrk[itrack]);
      arrayForTree->SetUniqueID(uid);
    }
    array = track->GetTrackPointArray();
    for(ipt=0; ipt<array->GetNPoints(); ipt++) {
      array->GetPoint(point,ipt);
      volId = point.GetVolumeID();
      if(volId<=0) continue;
      layerId = AliGeomManager::VolUIDToLayer(volId,modId);
      if(layerId<1 || layerId>6 || !layerOK[layerId-1][itrack]) continue;
      arrayForTree->AddPoint(jpt,&point);
      jpt++;
      switch(layerId) {
      case 1:
	fHistLayer0->Fill(TMath::ATan2(point.GetY(),point.GetX()),point.GetZ());
	break;
      case 2:
	fHistLayer1->Fill(TMath::ATan2(point.GetY(),point.GetX()),point.GetZ());
	break;
      case 3:
	fHistLayer2->Fill(TMath::ATan2(point.GetY(),point.GetX()),point.GetZ());
	break;
      case 4:
	fHistLayer3->Fill(TMath::ATan2(point.GetY(),point.GetX()),point.GetZ());
	break;
      case 5:
	fHistLayer4->Fill(TMath::ATan2(point.GetY(),point.GetX()),point.GetZ());
	break;
      case 6:
	fHistLayer5->Fill(TMath::ATan2(point.GetY(),point.GetX()),point.GetZ());
	break;
      }
      // Post the data for slot 2
      if(jpt==1) PostData(2,fListOfHistos); // only if this is the first points
      if(!point.IsExtra() || 
	 !(GetRecoParam()->GetAlignFilterFillQANtuples())) continue;
      nclsTrk[itrack]--;
      for(Int_t ll=1;ll<layerId;ll++) modId+=AliITSgeomTGeo::GetNLadders(ll)*AliITSgeomTGeo::GetNDetectors(ll);
      AliITSgeomTGeo::GetModuleId(modId,lay,lad,det);
      globExtra[0]=point.GetX();
      globExtra[1]=point.GetY();
      globExtra[2]=point.GetZ();
      AliITSgeomTGeo::GlobalToLocal(lay,lad,det,globExtra,locExtra);
      //printf("%d %d %d %d %d  %f %f %f\n",volId,modId,lay,lad,det,locExtra[0],locExtra[1],locExtra[2]);
      track->GetDZ(point.GetX(),point.GetY(),point.GetZ(),esd->GetMagneticField(),dzOverlap);
      AliTrackPoint pointT;
      Float_t radius,radiusT,phiv,phivT,thetav,thetavT;
      for(Int_t lll=0;lll<ipt;lll++) {
	array->GetPoint(pointT,lll);
	if(pointT.GetVolumeID()<=0) continue;
	Int_t layerIdT = AliGeomManager::VolUIDToLayer(pointT.GetVolumeID(),modId);
	if(layerIdT!=layerId) continue;
	radius=TMath::Sqrt((point.GetX()-vtxpos[0])*(point.GetX()-vtxpos[0])+(point.GetY()-vtxpos[1])*(point.GetY()-vtxpos[1]));
	radiusT=TMath::Sqrt((pointT.GetX()-vtxpos[0])*(pointT.GetX()-vtxpos[0])+(pointT.GetY()-vtxpos[1])*(pointT.GetY()-vtxpos[1]));
	phiv=TMath::ATan2(point.GetY()-vtxpos[1],point.GetX()-vtxpos[0]);
	phivT=TMath::ATan2(pointT.GetY()-vtxpos[1],pointT.GetX()-vtxpos[0]);
	if(TMath::Abs(point.GetZ()-vtxpos[2])<0.00001 || TMath::Abs(pointT.GetZ()-vtxpos[2])<0.00001) continue;
	thetav=TMath::ATan(radius/(point.GetZ()-vtxpos[2]));
	thetavT=TMath::ATan(radiusT/(pointT.GetZ()-vtxpos[2]));
	dzOverlap[0]=(Float_t)((phivT-phiv)*0.5*(radiusT+radius));
	if(TMath::Abs(TMath::Tan(0.5*(thetav+thetavT)))<0.00001) continue;
	dzOverlap[1]=(Float_t)((pointT.GetZ()-point.GetZ())-(radiusT-radius)/TMath::Tan(0.5*(thetav+thetavT)));
	fntExtra->Fill((Float_t)nclsTrk[itrack],(Float_t)(layerId-1),lad,volId,TMath::ATan2(point.GetY(),point.GetX()),point.GetX(),point.GetY(),point.GetZ(),locExtra[0],locExtra[2],dzOverlap[0],dzOverlap[1],d0z0mu[0],d0z0mu[1],track->Pt());
      }
    }

    if(!(GetRecoParam()->GetAlignFilterCosmicMergeTracks())) {
      curv = curvArray[itrack];
      curverr = curverrArray[itrack];
      fspTree->Fill();
    }
  }

  if(GetRecoParam()->GetAlignFilterCosmicMergeTracks()) {
    curv = 0.5*(curvArray[0]-curvArray[1]);  // the "-" is because the two tracks have opposite curvature!
    curverr = 0.5*TMath::Sqrt(curverrArray[0]*curverrArray[0]+curverrArray[1]*curverrArray[1]);
    fspTree->Fill();
  }
  PostData(1,fspTree);

  if(!(GetRecoParam()->GetAlignFilterFillQANtuples())) return; 
  // fill ntuple with track-to-track matching
  Float_t phimu,thetamu,phiout,thetaout,dphi,dtheta,rotymu,rotyout,droty;    
  Float_t d0[2],z0[2];
  Float_t sigmad0[2],sigmaz0[2];
  phimu = track1->GetAlpha()+TMath::ASin(track1->GetSnp());
  thetamu = 0.5*TMath::Pi()-TMath::ATan(track1->GetTgl());
  phiout = track2->GetAlpha()+TMath::ASin(track2->GetSnp());
  thetaout = 0.5*TMath::Pi()-TMath::ATan(track2->GetTgl());
  rotymu = TMath::ATan2(track1->Px(),track1->Pz());
  rotyout = TMath::ATan2(track2->Px(),track2->Pz());

  dphi = phimu - (phiout+TMath::Pi());
  dtheta = thetamu - (TMath::Pi()-thetaout);
  if(rotymu>0) {
    droty = rotymu - (rotyout+TMath::Pi());
  } else {
    droty = rotymu - (rotyout-TMath::Pi());
  }

  Double_t alpha = TMath::ATan2(track1->Py(),track1->Px());

  track1->Propagate(alpha,0.,esd->GetMagneticField());
  track2->Propagate(alpha,0.,esd->GetMagneticField());
  d0[0] = track1->GetY();
  z0[0] = track1->GetZ();
  d0[1] = track2->GetY();
  z0[1] = track2->GetZ();
  Float_t dxy = -(d0[0]-d0[1]);
  Float_t dz  = z0[0]-z0[1];
  sigmad0[0] = TMath::Sqrt(track1->GetSigmaY2());
  sigmaz0[0] = TMath::Sqrt(track1->GetSigmaZ2());
  sigmad0[1] = TMath::Sqrt(track2->GetSigmaY2());
  sigmaz0[1] = TMath::Sqrt(track2->GetSigmaZ2());
  /*  
  Double_t xyz1atxl0[3],xyz1atxl1[3],xyz2atxl0[3],xyz2atxl1[3];
  track1->GetXYZAt(0.,esd->GetMagneticField(),xyz1atxl0);
  track1->GetXYZAt(1.,esd->GetMagneticField(),xyz1atxl1);
  track2->GetXYZAt(0.,esd->GetMagneticField(),xyz2atxl0);
  track2->GetXYZAt(1.,esd->GetMagneticField(),xyz2atxl1);
  Float_t x1aty0 = (xyz1atxl0[0]*xyz1atxl1[1]-xyz1atxl0[1]*xyz1atxl1[0])/(xyz1atxl1[1]-xyz1atxl0[1]);
  Float_t x2aty0 = (xyz2atxl0[0]*xyz2atxl1[1]-xyz2atxl0[1]*xyz2atxl1[0])/(xyz2atxl1[1]-xyz2atxl0[1]);
  Float_t dxaty0 = x1aty0-x2aty0;
  */
  fntCosmicMatching->Fill((Float_t)nclsTrk[0],(Float_t)nclsTrk[1],track1->Pt(),track2->Pt(),sigmad0[0],sigmad0[1],sigmaz0[0],sigmaz0[1],dxy,dz,phimu,thetamu,TMath::Abs(d0z0mu[0]),d0z0mu[1]);
  
  return;
}

//________________________________________________________________________
void AliAlignmentDataFilterITS::FilterCollision(const AliESDEvent *esd)
{
  // Extract ITS AliTrackPoints for Cosmics (check angular matching
  // of top and bottom track, merge the two tracks, if requested)
  //

  // Set branch addresses for space points tree
  AliTrackPointArray *arrayForTree=0;
  AliESDVertex *vertexForTree=0;
  Float_t curv,curverr,runNumber;
  TObjString *itsaligndata=0;
  TObjString *itscalibrespsdd = 0;
  fspTree->SetBranchAddress("SP",&arrayForTree);
  fspTree->SetBranchAddress("vertex",&vertexForTree);
  fspTree->SetBranchAddress("curv",&curv);
  fspTree->SetBranchAddress("curverr",&curverr);
  fspTree->SetBranchAddress("run",&runNumber);
  fspTree->SetBranchAddress("ITSAlignData",&itsaligndata);
  fspTree->SetBranchAddress("ITSCalibRespSDD",&itscalibrespsdd);


  runNumber = (Float_t)esd->GetRunNumber();
  Int_t uid=20000+esd->GetEventNumberInFile();

  TTree* esdTree = dynamic_cast<TTree*> (GetInputData(0));
  if(!esdTree) return;
  // Get the list of OCDB objects used for reco 
  TList *cdbList = (TList*)(esdTree->GetTree()->GetUserInfo())->FindObject("cdbList");
  TIter iter2(cdbList);	     
  TObjString* cdbEntry=0;
  TString cdbEntryString;
  while((cdbEntry =(TObjString*)(iter2.Next()))) {
    cdbEntryString = cdbEntry->GetString();
    if(cdbEntryString.Contains("ITS/Align/Data")) {
      itsaligndata = new TObjString(*cdbEntry);
      itsaligndata->SetString(itsaligndata->GetString());
    }
    if(cdbEntryString.Contains("ITS/Calib/RespSDD")) {
      itscalibrespsdd = new TObjString(*cdbEntry);
      itscalibrespsdd->SetString(itscalibrespsdd->GetString());
    }
  }	 

  Int_t ntracks = esd->GetNumberOfTracks();

  if(ntracks==0) return;

  const AliESDVertex *vertexTracks = esd->GetPrimaryVertexTracks();
  if(!vertexTracks) return;
  if(vertexTracks->GetNContributors()<=0) return;

  Double_t vtxpos[3]; vertexTracks->GetXYZ(vtxpos);

  Int_t ncls=0;
  Double_t pt=-10000.;
  Double_t d0z0[2],covd0z0[3];
  const AliTrackPointArray *array = 0;

  for (Int_t itrack=0; itrack < ntracks; itrack++) {
    AliESDtrack * track = esd->GetTrack(itrack);
    if (!track) continue;

    if(fDownsamplelowpt && TMath::Abs(esd->GetMagneticField())>0.01 &&
       track->Pt()<gRandom->Rndm()) continue;

    if(track->GetNcls(0)<GetRecoParam()->GetAlignFilterMinITSPoints()) continue;

    if((GetRecoParam()->GetAlignFilterOnlyITSSATracks()) && track->GetNcls(1)>0) continue;
    if((GetRecoParam()->GetAlignFilterOnlyITSTPCTracks()) && track->GetNcls(1)==0) continue;

    if(track->Pt()<GetRecoParam()->GetAlignFilterMinPt() || 
       track->Pt()>GetRecoParam()->GetAlignFilterMaxPt()) continue;

    pt = track->Pt();
    ncls = track->GetNcls(0);
    Double_t maxd=10000.;
    track->PropagateToDCA(vertexTracks,esd->GetMagneticField(),maxd,d0z0,covd0z0);

    // read ITS cluster map
    Int_t map[6];
    for(Int_t ilay=0;ilay<6;ilay++) {
      map[ilay]=0;
      if(track->HasPointOnITSLayer(ilay)) map[ilay]=1;
    }
    AliDebug(2,Form("ITS map : %d %d %d %d %d %d pt %f\n",map[0],map[1],map[2],map[3],map[4],map[5],track->Pt()));
    Int_t idx[12];
    track->GetITSclusters(idx);
    AliDebug(2,Form("cls idx %d %d %d %d %d %d %d %d %d %d %d %d\n",idx[0],idx[1],idx[2],idx[3],idx[4],idx[5],idx[6],idx[7],idx[8],idx[9],idx[10],idx[11]));
    

    AliTrackPoint point;
    Int_t ipt,volId,modId,layerId,lay,lad,det;
    Int_t jpt=0;
    Bool_t layerOK[6]; for(Int_t l1=0;l1<6;l1++) layerOK[l1]=kFALSE;
    
    array = track->GetTrackPointArray();
    if(!array) {printf("no track points\n"); continue;}
    for(ipt=0; ipt<array->GetNPoints(); ipt++) {
      array->GetPoint(point,ipt);
      volId = point.GetVolumeID();
      if(volId<=0) continue;
      layerId = AliGeomManager::VolUIDToLayer(volId,modId);
      if(layerId<1 || layerId>6) continue;
      if(point.IsExtra() && 
	 (GetRecoParam()->GetAlignFilterSkipExtra())) continue;
      layerOK[layerId-1]=kTRUE;
      jpt++;
    }

    if(jpt < GetRecoParam()->GetAlignFilterMinITSPoints()) continue;

    fHistNpoints->Fill(jpt);
    fHistPt->Fill(pt);
    PostData(2,fListOfHistos);

    Float_t dzOverlap[2];
    Double_t globExtra[3],locExtra[3];
    arrayForTree = new AliTrackPointArray(jpt);
    arrayForTree->SetUniqueID(uid);
    jpt=0;
    array = track->GetTrackPointArray();
    if(!array) continue;
    for(ipt=0; ipt<array->GetNPoints(); ipt++) {
      array->GetPoint(point,ipt);
      volId = point.GetVolumeID();
      layerId = AliGeomManager::VolUIDToLayer(volId,modId);
      if(layerId<1 || layerId>6 || !layerOK[layerId-1]) continue;
      arrayForTree->AddPoint(jpt,&point);
      switch(layerId) {
      case 1:
	fHistLayer0->Fill(TMath::ATan2(point.GetY(),point.GetX()),point.GetZ());
	break;
      case 2:
	fHistLayer1->Fill(TMath::ATan2(point.GetY(),point.GetX()),point.GetZ());
	break;
      case 3:
	fHistLayer2->Fill(TMath::ATan2(point.GetY(),point.GetX()),point.GetZ());
	break;
      case 4:
	fHistLayer3->Fill(TMath::ATan2(point.GetY(),point.GetX()),point.GetZ());
	break;
      case 5:
	fHistLayer4->Fill(TMath::ATan2(point.GetY(),point.GetX()),point.GetZ());
	break;
      case 6:
	fHistLayer5->Fill(TMath::ATan2(point.GetY(),point.GetX()),point.GetZ());
	break;
      }
      jpt++;
      if(!point.IsExtra() || 
	 !(GetRecoParam()->GetAlignFilterFillQANtuples())) continue;
      ncls--;
      for(Int_t ll=1;ll<layerId;ll++) modId+=AliITSgeomTGeo::GetNLadders(ll)*AliITSgeomTGeo::GetNDetectors(ll);
      AliITSgeomTGeo::GetModuleId(modId,lay,lad,det);
      globExtra[0]=point.GetX();
      globExtra[1]=point.GetY();
      globExtra[2]=point.GetZ();
      AliITSgeomTGeo::GlobalToLocal(lay,lad,det,globExtra,locExtra);
      track->GetDZ(point.GetX(),point.GetY(),point.GetZ(),esd->GetMagneticField(),dzOverlap);
      AliTrackPoint pointT;
      Float_t radius,radiusT,phiv,phivT,thetav,thetavT;
      for(Int_t lll=0;lll<ipt;lll++) {
	array->GetPoint(pointT,lll);
	Int_t layerIdT = AliGeomManager::VolUIDToLayer(pointT.GetVolumeID(),modId);
	if(layerIdT!=layerId) continue;
	radius=TMath::Sqrt((point.GetX()-vtxpos[0])*(point.GetX()-vtxpos[0])+(point.GetY()-vtxpos[1])*(point.GetY()-vtxpos[1]));
	radiusT=TMath::Sqrt((pointT.GetX()-vtxpos[0])*(pointT.GetX()-vtxpos[0])+(pointT.GetY()-vtxpos[1])*(pointT.GetY()-vtxpos[1]));
	phiv=TMath::ATan2(point.GetY()-vtxpos[1],point.GetX()-vtxpos[0]);
	phivT=TMath::ATan2(pointT.GetY()-vtxpos[1],pointT.GetX()-vtxpos[0]);
	if(TMath::Abs(point.GetZ()-vtxpos[2])<0.00001 || TMath::Abs(pointT.GetZ()-vtxpos[2])<0.00001) continue;
	thetav=TMath::ATan(radius/(point.GetZ()-vtxpos[2]));
	thetavT=TMath::ATan(radiusT/(pointT.GetZ()-vtxpos[2]));
	dzOverlap[0]=(Float_t)((phivT-phiv)*0.5*(radiusT+radius));
	if(TMath::Abs(TMath::Tan(0.5*(thetav+thetavT)))<0.00001) continue;
	dzOverlap[1]=(Float_t)((pointT.GetZ()-point.GetZ())-(radiusT-radius)/TMath::Tan(0.5*(thetav+thetavT)));
	fntExtra->Fill((Float_t)ncls,(Float_t)(layerId-1),lad,volId,TMath::ATan2(point.GetY(),point.GetX()),point.GetX(),point.GetY(),point.GetZ(),locExtra[0],locExtra[2],dzOverlap[0],dzOverlap[1],d0z0[0],d0z0[1],track->Pt());
      }
    }

    curv = track->GetC(esd->GetMagneticField());
    curverr = TMath::Sqrt(track->GetSigma1Pt2())*track->GetC(esd->GetMagneticField())/track->OneOverPt();

    vertexForTree = new AliESDVertex(*vertexTracks);
    if(vertexTracks->UsesTrack(track->GetID())) {
      vertexForTree->SetID(1);
    } else {
      vertexForTree->SetID(0);
    }

    fspTree->Fill();
 
  } // end of tracks loop

  PostData(1,fspTree);

  return;
}

//________________________________________________________________________
void AliAlignmentDataFilterITS::Terminate(Option_t */*option*/)
{
  // Terminate analysis
  //
  AliDebug(2,"AliITSAlignmentDataFiler: Terminate() \n");

  fspTree = dynamic_cast<TTree*> (GetOutputData(1));
  if (!fspTree) {     
    printf("ERROR: fspTree not available\n");
    return;
  }

  fListOfHistos = dynamic_cast<TList*> (GetOutputData(2));
  if (!fListOfHistos) {     
    printf("ERROR: fListOfHistos not available\n");
    return;
  }

  fHistNevents = dynamic_cast<TH1F*>(fListOfHistos->FindObject("fHistNevents"));
  fHistNpoints = dynamic_cast<TH1F*>(fListOfHistos->FindObject("fHistNpoints"));
  fHistPt = dynamic_cast<TH1F*>(fListOfHistos->FindObject("fHistPt"));
  fHistLayer0 = dynamic_cast<TH2F*>(fListOfHistos->FindObject("fHistLayer0"));
  fHistLayer1 = dynamic_cast<TH2F*>(fListOfHistos->FindObject("fHistLayer1"));
  fHistLayer2 = dynamic_cast<TH2F*>(fListOfHistos->FindObject("fHistLayer2"));
  fHistLayer3 = dynamic_cast<TH2F*>(fListOfHistos->FindObject("fHistLayer3"));
  fHistLayer4 = dynamic_cast<TH2F*>(fListOfHistos->FindObject("fHistLayer4"));
  fHistLayer5 = dynamic_cast<TH2F*>(fListOfHistos->FindObject("fHistLayer5"));
  fntExtra = dynamic_cast<TNtuple*>(fListOfHistos->FindObject("fntExtra"));
  fntCosmicMatching = dynamic_cast<TNtuple*>(fListOfHistos->FindObject("fntCosmicMatching"));



  return;
}
//-------------------------------------------------------------------------------
const AliITSRecoParam *AliAlignmentDataFilterITS::GetRecoParam() const 
{
  //
  // Return the ITSRecoParam object
  //
  if(AliITSReconstructor::GetRecoParam()) {
    return AliITSReconstructor::GetRecoParam();
  } else if(fITSRecoParam) {
    return fITSRecoParam;
  } else return NULL;
}
//--------------------------------------------------------------------------------
Int_t AliAlignmentDataFilterITS::WriteTrackPointsInIdealGeom(const Char_t *fin, 
							     const Char_t *fout,
							     const Char_t *fmis,
							     const Char_t *fgeo,
							     Bool_t prn)
{
  //
  // Convert AliTrackPoints in fin, reconstructed with fmis, back
  // to ideal geometry
  //
  // M. Lunardon
  //


  TGeoHMatrix deltahm;

  // Load geometry
  if (gSystem->AccessPathName(fgeo)) {
    printf("couldn't find geometry file %s - skipping...\n",fmis);
    return -1;
  }
  
  TFile *geofile=TFile::Open(fgeo);
  TGeoManager *fgGeometry=NULL;

  fgGeometry=(TGeoManager*)geofile->Get("ALICE");

  if (!fgGeometry)
    fgGeometry=(TGeoManager*)geofile->Get("Geometry");

  if (!fgGeometry) {
    AliCDBEntry *entry = (AliCDBEntry*)geofile->Get("AliCDBEntry");
    if (entry)
      fgGeometry = (TGeoManager*)entry->GetObject();
  }

  if (!fgGeometry) return -1;
  AliGeomManager::SetGeometry(fgGeometry);
  if(!AliGeomManager::GetGeometry()) return -1;
  
  
  // open alignment file
  if (gSystem->AccessPathName(fmis)) {
    printf("couldn't open alignment file %s - skipping...\n",fmis);
    return -2;
  }
  TFile *pref = TFile::Open(fmis);
  if (!pref->IsOpen()) return -2;
  
  
  /// apply alignment to ideal geometry
  TClonesArray *prea=(TClonesArray*)pref->Get("ITSAlignObjs");
  if (!prea) {
    if (pref->Get("AliCDBEntry"))
      prea = (TClonesArray*) ((AliCDBEntry*)pref->Get("AliCDBEntry"))->GetObject();
  }
  if (!prea) return -3;  
  Int_t nprea=prea->GetEntriesFast();
  printf("Array of input misalignments with %d entries\n",nprea);
  AliGeomManager::ApplyAlignObjsToGeom(*prea); // apply all levels of objs
  
  AliTrackPointArray *tpain=NULL;
  TFile *tpainfile=NULL;
  TTree *treein=NULL;
  AliTrackPoint point; 
  AliITSAlignMille2Module *m2[2200];
  for (Int_t i=0; i<2198; i++)
    m2[i]=new AliITSAlignMille2Module(AliITSAlignMille2Module::GetVolumeIDFromIndex(i));  
  
  // open input file
  if (gSystem->AccessPathName(fin)) {
    printf("couldn't open file %s - skipping...\n",fin);
    return -4;
  }
  tpainfile = TFile::Open(fin);
  if (!tpainfile->IsOpen()) return -4;
  
  treein=(TTree*)tpainfile->Get("spTree");
  if (!treein) return -5;
  Float_t curv,curverr,runNumber;
  TObjString *itsaligndata=0;
  TObjString *itscalibrespsdd = 0;
  treein->SetBranchAddress("SP", &tpain);
  treein->SetBranchAddress("curv", &curv);
  treein->SetBranchAddress("curverr", &curverr);
  treein->SetBranchAddress("run",&runNumber);
  treein->SetBranchAddress("ITSAlignData",&itsaligndata);
  treein->SetBranchAddress("ITSCalibRespSDD",&itscalibrespsdd);

  int ntrks=treein->GetEntries();
  printf("Reading %d tracks from %s\n",ntrks,fin);
  
  
  // open output file
  TFile *pointsFile = TFile::Open(fout,"RECREATE");
  if (!pointsFile || !pointsFile->IsOpen()) {
    printf("Can't open output file %s !",fout);
    return -6;
  }
  AliTrackPointArray *array = new AliTrackPointArray();
  
  // new!
  TTree *treeout=(TTree*)treein->Clone("spTree");
  treeout->Reset();
  treeout->SetBranchAddress("SP", &array);
  treeout->SetBranchAddress("curv", &curv);
  treeout->SetBranchAddress("curverr", &curverr);
  treeout->SetBranchAddress("run",&runNumber);
  treeout->SetBranchAddress("ITSAlignData",&itsaligndata);
  treeout->SetBranchAddress("ITSCalibRespSDD",&itscalibrespsdd);

  // tracks main loop
  for (Int_t it=0; it<ntrks; it++) {    
    if (!(it%5000) ) printf("...processing track n. %d\n",it);
    
    treein->GetEvent(it);
    
    //////////////////////////////
    
    AliTrackPointArray *atp=tpain;
    AliTrackPointArray *atps=NULL;
    Int_t npts=atp->GetNPoints();
    
    AliTrackPoint p;
    // check points in specific places
    
    // build a new track
    atps=new AliTrackPointArray(npts);
        
    Int_t npto=0;
    for (int i=0; i<npts; i++) {
      atp->GetPoint(p,i);
      
      UShort_t volid=atp->GetVolumeID()[i];
      Int_t index=AliITSAlignMille2Module::GetIndexFromVolumeID(volid);
      
      if(index<0 || index>=2200) continue;
      // dealign point
      // get MODIFIED matrix
      TGeoHMatrix *svMatrix = m2[index]->GetSensitiveVolumeMatrix(p.GetVolumeID());
      //TGeoHMatrix *svOrigMatrix = mm->GetSensitiveVolumeOrigGlobalMatrix(p.GetVolumeID());
      
      Double_t pg[3],pl[3];
      pg[0]=p.GetX();
      pg[1]=p.GetY();
      pg[2]=p.GetZ();
      if (prn) printf("Global coordinates of measured point : X=%f  Y=%f  Z=%f \n",pg[0],pg[1],pg[2]);
      svMatrix->MasterToLocal(pg,pl);
      
      // check that things went OK: local y should be 0.
      if(TMath::Abs(pl[1])>1.e-6) {
	printf("AliAlignmentDataFilterITS::WriteTrackPointsInIdealGeom: ERROR, local y = %f (should be zero)\n",pl[1]);
	return -7;
      }

      if (prn) printf("Local coordinates of measured point : X=%f  Y=%f  Z=%f \n",pl[0],pl[1],pl[2]);
      
      // update covariance matrix
      TGeoHMatrix hcov;
      Double_t hcovel[9];
      hcovel[0]=(Double_t)(p.GetCov()[0]);
      hcovel[1]=(Double_t)(p.GetCov()[1]);
      hcovel[2]=(Double_t)(p.GetCov()[2]);
      hcovel[3]=(Double_t)(p.GetCov()[1]);
      hcovel[4]=(Double_t)(p.GetCov()[3]);
      hcovel[5]=(Double_t)(p.GetCov()[4]);
      hcovel[6]=(Double_t)(p.GetCov()[2]);
      hcovel[7]=(Double_t)(p.GetCov()[4]);
      hcovel[8]=(Double_t)(p.GetCov()[5]);
      hcov.SetRotation(hcovel);
      // now rotate in local system
      hcov.Multiply(svMatrix);
      hcov.MultiplyLeft(&svMatrix->Inverse());
      // now hcov is LOCAL COVARIANCE MATRIX
      
      /// get original matrix of sens. vol.
      TGeoHMatrix *svOrigMatrix = m2[index]->GetSensitiveVolumeOrigGlobalMatrix(p.GetVolumeID());
      // modify global coordinates according with pre-aligment
      svOrigMatrix->LocalToMaster(pl,pg);
      // now rotate in local system
      hcov.Multiply(&svOrigMatrix->Inverse());
      hcov.MultiplyLeft(svOrigMatrix);
      // hcov is back in GLOBAL RF
      Float_t pcov[6];
      pcov[0]=hcov.GetRotationMatrix()[0];
      pcov[1]=hcov.GetRotationMatrix()[1];
      pcov[2]=hcov.GetRotationMatrix()[2];
      pcov[3]=hcov.GetRotationMatrix()[4];
      pcov[4]=hcov.GetRotationMatrix()[5];
      pcov[5]=hcov.GetRotationMatrix()[8];
      
      p.SetXYZ(pg[0],pg[1],pg[2],pcov);
      if (prn) printf("New global coordinates of measured point : X=%f  Y=%f  Z=%f \n",pg[0],pg[1],pg[2]);
      atps->AddPoint(npto,&p);
      if (prn) printf("Adding point[%d] = ( %f , %f , %f )     volid = %d\n",npto,atps->GetX()[npto],atps->GetY()[npto],atps->GetZ()[npto],atps->GetVolumeID()[npto] );
      if (prn) p.Print("");
      
      npto++;
    }
    
    
    ////////////////////////////////////////////////////////////
    array = atps;
    treeout->Fill();
    
    delete atps;
    atps=NULL;
    
  } // end loop on tracks
  
  pointsFile->Write();
  pointsFile->Close();
  tpainfile->Close();
  
  return 0;
}
 AliAlignmentDataFilterITS.cxx:1
 AliAlignmentDataFilterITS.cxx:2
 AliAlignmentDataFilterITS.cxx:3
 AliAlignmentDataFilterITS.cxx:4
 AliAlignmentDataFilterITS.cxx:5
 AliAlignmentDataFilterITS.cxx:6
 AliAlignmentDataFilterITS.cxx:7
 AliAlignmentDataFilterITS.cxx:8
 AliAlignmentDataFilterITS.cxx:9
 AliAlignmentDataFilterITS.cxx:10
 AliAlignmentDataFilterITS.cxx:11
 AliAlignmentDataFilterITS.cxx:12
 AliAlignmentDataFilterITS.cxx:13
 AliAlignmentDataFilterITS.cxx:14
 AliAlignmentDataFilterITS.cxx:15
 AliAlignmentDataFilterITS.cxx:16
 AliAlignmentDataFilterITS.cxx:17
 AliAlignmentDataFilterITS.cxx:18
 AliAlignmentDataFilterITS.cxx:19
 AliAlignmentDataFilterITS.cxx:20
 AliAlignmentDataFilterITS.cxx:21
 AliAlignmentDataFilterITS.cxx:22
 AliAlignmentDataFilterITS.cxx:23
 AliAlignmentDataFilterITS.cxx:24
 AliAlignmentDataFilterITS.cxx:25
 AliAlignmentDataFilterITS.cxx:26
 AliAlignmentDataFilterITS.cxx:27
 AliAlignmentDataFilterITS.cxx:28
 AliAlignmentDataFilterITS.cxx:29
 AliAlignmentDataFilterITS.cxx:30
 AliAlignmentDataFilterITS.cxx:31
 AliAlignmentDataFilterITS.cxx:32
 AliAlignmentDataFilterITS.cxx:33
 AliAlignmentDataFilterITS.cxx:34
 AliAlignmentDataFilterITS.cxx:35
 AliAlignmentDataFilterITS.cxx:36
 AliAlignmentDataFilterITS.cxx:37
 AliAlignmentDataFilterITS.cxx:38
 AliAlignmentDataFilterITS.cxx:39
 AliAlignmentDataFilterITS.cxx:40
 AliAlignmentDataFilterITS.cxx:41
 AliAlignmentDataFilterITS.cxx:42
 AliAlignmentDataFilterITS.cxx:43
 AliAlignmentDataFilterITS.cxx:44
 AliAlignmentDataFilterITS.cxx:45
 AliAlignmentDataFilterITS.cxx:46
 AliAlignmentDataFilterITS.cxx:47
 AliAlignmentDataFilterITS.cxx:48
 AliAlignmentDataFilterITS.cxx:49
 AliAlignmentDataFilterITS.cxx:50
 AliAlignmentDataFilterITS.cxx:51
 AliAlignmentDataFilterITS.cxx:52
 AliAlignmentDataFilterITS.cxx:53
 AliAlignmentDataFilterITS.cxx:54
 AliAlignmentDataFilterITS.cxx:55
 AliAlignmentDataFilterITS.cxx:56
 AliAlignmentDataFilterITS.cxx:57
 AliAlignmentDataFilterITS.cxx:58
 AliAlignmentDataFilterITS.cxx:59
 AliAlignmentDataFilterITS.cxx:60
 AliAlignmentDataFilterITS.cxx:61
 AliAlignmentDataFilterITS.cxx:62
 AliAlignmentDataFilterITS.cxx:63
 AliAlignmentDataFilterITS.cxx:64
 AliAlignmentDataFilterITS.cxx:65
 AliAlignmentDataFilterITS.cxx:66
 AliAlignmentDataFilterITS.cxx:67
 AliAlignmentDataFilterITS.cxx:68
 AliAlignmentDataFilterITS.cxx:69
 AliAlignmentDataFilterITS.cxx:70
 AliAlignmentDataFilterITS.cxx:71
 AliAlignmentDataFilterITS.cxx:72
 AliAlignmentDataFilterITS.cxx:73
 AliAlignmentDataFilterITS.cxx:74
 AliAlignmentDataFilterITS.cxx:75
 AliAlignmentDataFilterITS.cxx:76
 AliAlignmentDataFilterITS.cxx:77
 AliAlignmentDataFilterITS.cxx:78
 AliAlignmentDataFilterITS.cxx:79
 AliAlignmentDataFilterITS.cxx:80
 AliAlignmentDataFilterITS.cxx:81
 AliAlignmentDataFilterITS.cxx:82
 AliAlignmentDataFilterITS.cxx:83
 AliAlignmentDataFilterITS.cxx:84
 AliAlignmentDataFilterITS.cxx:85
 AliAlignmentDataFilterITS.cxx:86
 AliAlignmentDataFilterITS.cxx:87
 AliAlignmentDataFilterITS.cxx:88
 AliAlignmentDataFilterITS.cxx:89
 AliAlignmentDataFilterITS.cxx:90
 AliAlignmentDataFilterITS.cxx:91
 AliAlignmentDataFilterITS.cxx:92
 AliAlignmentDataFilterITS.cxx:93
 AliAlignmentDataFilterITS.cxx:94
 AliAlignmentDataFilterITS.cxx:95
 AliAlignmentDataFilterITS.cxx:96
 AliAlignmentDataFilterITS.cxx:97
 AliAlignmentDataFilterITS.cxx:98
 AliAlignmentDataFilterITS.cxx:99
 AliAlignmentDataFilterITS.cxx:100
 AliAlignmentDataFilterITS.cxx:101
 AliAlignmentDataFilterITS.cxx:102
 AliAlignmentDataFilterITS.cxx:103
 AliAlignmentDataFilterITS.cxx:104
 AliAlignmentDataFilterITS.cxx:105
 AliAlignmentDataFilterITS.cxx:106
 AliAlignmentDataFilterITS.cxx:107
 AliAlignmentDataFilterITS.cxx:108
 AliAlignmentDataFilterITS.cxx:109
 AliAlignmentDataFilterITS.cxx:110
 AliAlignmentDataFilterITS.cxx:111
 AliAlignmentDataFilterITS.cxx:112
 AliAlignmentDataFilterITS.cxx:113
 AliAlignmentDataFilterITS.cxx:114
 AliAlignmentDataFilterITS.cxx:115
 AliAlignmentDataFilterITS.cxx:116
 AliAlignmentDataFilterITS.cxx:117
 AliAlignmentDataFilterITS.cxx:118
 AliAlignmentDataFilterITS.cxx:119
 AliAlignmentDataFilterITS.cxx:120
 AliAlignmentDataFilterITS.cxx:121
 AliAlignmentDataFilterITS.cxx:122
 AliAlignmentDataFilterITS.cxx:123
 AliAlignmentDataFilterITS.cxx:124
 AliAlignmentDataFilterITS.cxx:125
 AliAlignmentDataFilterITS.cxx:126
 AliAlignmentDataFilterITS.cxx:127
 AliAlignmentDataFilterITS.cxx:128
 AliAlignmentDataFilterITS.cxx:129
 AliAlignmentDataFilterITS.cxx:130
 AliAlignmentDataFilterITS.cxx:131
 AliAlignmentDataFilterITS.cxx:132
 AliAlignmentDataFilterITS.cxx:133
 AliAlignmentDataFilterITS.cxx:134
 AliAlignmentDataFilterITS.cxx:135
 AliAlignmentDataFilterITS.cxx:136
 AliAlignmentDataFilterITS.cxx:137
 AliAlignmentDataFilterITS.cxx:138
 AliAlignmentDataFilterITS.cxx:139
 AliAlignmentDataFilterITS.cxx:140
 AliAlignmentDataFilterITS.cxx:141
 AliAlignmentDataFilterITS.cxx:142
 AliAlignmentDataFilterITS.cxx:143
 AliAlignmentDataFilterITS.cxx:144
 AliAlignmentDataFilterITS.cxx:145
 AliAlignmentDataFilterITS.cxx:146
 AliAlignmentDataFilterITS.cxx:147
 AliAlignmentDataFilterITS.cxx:148
 AliAlignmentDataFilterITS.cxx:149
 AliAlignmentDataFilterITS.cxx:150
 AliAlignmentDataFilterITS.cxx:151
 AliAlignmentDataFilterITS.cxx:152
 AliAlignmentDataFilterITS.cxx:153
 AliAlignmentDataFilterITS.cxx:154
 AliAlignmentDataFilterITS.cxx:155
 AliAlignmentDataFilterITS.cxx:156
 AliAlignmentDataFilterITS.cxx:157
 AliAlignmentDataFilterITS.cxx:158
 AliAlignmentDataFilterITS.cxx:159
 AliAlignmentDataFilterITS.cxx:160
 AliAlignmentDataFilterITS.cxx:161
 AliAlignmentDataFilterITS.cxx:162
 AliAlignmentDataFilterITS.cxx:163
 AliAlignmentDataFilterITS.cxx:164
 AliAlignmentDataFilterITS.cxx:165
 AliAlignmentDataFilterITS.cxx:166
 AliAlignmentDataFilterITS.cxx:167
 AliAlignmentDataFilterITS.cxx:168
 AliAlignmentDataFilterITS.cxx:169
 AliAlignmentDataFilterITS.cxx:170
 AliAlignmentDataFilterITS.cxx:171
 AliAlignmentDataFilterITS.cxx:172
 AliAlignmentDataFilterITS.cxx:173
 AliAlignmentDataFilterITS.cxx:174
 AliAlignmentDataFilterITS.cxx:175
 AliAlignmentDataFilterITS.cxx:176
 AliAlignmentDataFilterITS.cxx:177
 AliAlignmentDataFilterITS.cxx:178
 AliAlignmentDataFilterITS.cxx:179
 AliAlignmentDataFilterITS.cxx:180
 AliAlignmentDataFilterITS.cxx:181
 AliAlignmentDataFilterITS.cxx:182
 AliAlignmentDataFilterITS.cxx:183
 AliAlignmentDataFilterITS.cxx:184
 AliAlignmentDataFilterITS.cxx:185
 AliAlignmentDataFilterITS.cxx:186
 AliAlignmentDataFilterITS.cxx:187
 AliAlignmentDataFilterITS.cxx:188
 AliAlignmentDataFilterITS.cxx:189
 AliAlignmentDataFilterITS.cxx:190
 AliAlignmentDataFilterITS.cxx:191
 AliAlignmentDataFilterITS.cxx:192
 AliAlignmentDataFilterITS.cxx:193
 AliAlignmentDataFilterITS.cxx:194
 AliAlignmentDataFilterITS.cxx:195
 AliAlignmentDataFilterITS.cxx:196
 AliAlignmentDataFilterITS.cxx:197
 AliAlignmentDataFilterITS.cxx:198
 AliAlignmentDataFilterITS.cxx:199
 AliAlignmentDataFilterITS.cxx:200
 AliAlignmentDataFilterITS.cxx:201
 AliAlignmentDataFilterITS.cxx:202
 AliAlignmentDataFilterITS.cxx:203
 AliAlignmentDataFilterITS.cxx:204
 AliAlignmentDataFilterITS.cxx:205
 AliAlignmentDataFilterITS.cxx:206
 AliAlignmentDataFilterITS.cxx:207
 AliAlignmentDataFilterITS.cxx:208
 AliAlignmentDataFilterITS.cxx:209
 AliAlignmentDataFilterITS.cxx:210
 AliAlignmentDataFilterITS.cxx:211
 AliAlignmentDataFilterITS.cxx:212
 AliAlignmentDataFilterITS.cxx:213
 AliAlignmentDataFilterITS.cxx:214
 AliAlignmentDataFilterITS.cxx:215
 AliAlignmentDataFilterITS.cxx:216
 AliAlignmentDataFilterITS.cxx:217
 AliAlignmentDataFilterITS.cxx:218
 AliAlignmentDataFilterITS.cxx:219
 AliAlignmentDataFilterITS.cxx:220
 AliAlignmentDataFilterITS.cxx:221
 AliAlignmentDataFilterITS.cxx:222
 AliAlignmentDataFilterITS.cxx:223
 AliAlignmentDataFilterITS.cxx:224
 AliAlignmentDataFilterITS.cxx:225
 AliAlignmentDataFilterITS.cxx:226
 AliAlignmentDataFilterITS.cxx:227
 AliAlignmentDataFilterITS.cxx:228
 AliAlignmentDataFilterITS.cxx:229
 AliAlignmentDataFilterITS.cxx:230
 AliAlignmentDataFilterITS.cxx:231
 AliAlignmentDataFilterITS.cxx:232
 AliAlignmentDataFilterITS.cxx:233
 AliAlignmentDataFilterITS.cxx:234
 AliAlignmentDataFilterITS.cxx:235
 AliAlignmentDataFilterITS.cxx:236
 AliAlignmentDataFilterITS.cxx:237
 AliAlignmentDataFilterITS.cxx:238
 AliAlignmentDataFilterITS.cxx:239
 AliAlignmentDataFilterITS.cxx:240
 AliAlignmentDataFilterITS.cxx:241
 AliAlignmentDataFilterITS.cxx:242
 AliAlignmentDataFilterITS.cxx:243
 AliAlignmentDataFilterITS.cxx:244
 AliAlignmentDataFilterITS.cxx:245
 AliAlignmentDataFilterITS.cxx:246
 AliAlignmentDataFilterITS.cxx:247
 AliAlignmentDataFilterITS.cxx:248
 AliAlignmentDataFilterITS.cxx:249
 AliAlignmentDataFilterITS.cxx:250
 AliAlignmentDataFilterITS.cxx:251
 AliAlignmentDataFilterITS.cxx:252
 AliAlignmentDataFilterITS.cxx:253
 AliAlignmentDataFilterITS.cxx:254
 AliAlignmentDataFilterITS.cxx:255
 AliAlignmentDataFilterITS.cxx:256
 AliAlignmentDataFilterITS.cxx:257
 AliAlignmentDataFilterITS.cxx:258
 AliAlignmentDataFilterITS.cxx:259
 AliAlignmentDataFilterITS.cxx:260
 AliAlignmentDataFilterITS.cxx:261
 AliAlignmentDataFilterITS.cxx:262
 AliAlignmentDataFilterITS.cxx:263
 AliAlignmentDataFilterITS.cxx:264
 AliAlignmentDataFilterITS.cxx:265
 AliAlignmentDataFilterITS.cxx:266
 AliAlignmentDataFilterITS.cxx:267
 AliAlignmentDataFilterITS.cxx:268
 AliAlignmentDataFilterITS.cxx:269
 AliAlignmentDataFilterITS.cxx:270
 AliAlignmentDataFilterITS.cxx:271
 AliAlignmentDataFilterITS.cxx:272
 AliAlignmentDataFilterITS.cxx:273
 AliAlignmentDataFilterITS.cxx:274
 AliAlignmentDataFilterITS.cxx:275
 AliAlignmentDataFilterITS.cxx:276
 AliAlignmentDataFilterITS.cxx:277
 AliAlignmentDataFilterITS.cxx:278
 AliAlignmentDataFilterITS.cxx:279
 AliAlignmentDataFilterITS.cxx:280
 AliAlignmentDataFilterITS.cxx:281
 AliAlignmentDataFilterITS.cxx:282
 AliAlignmentDataFilterITS.cxx:283
 AliAlignmentDataFilterITS.cxx:284
 AliAlignmentDataFilterITS.cxx:285
 AliAlignmentDataFilterITS.cxx:286
 AliAlignmentDataFilterITS.cxx:287
 AliAlignmentDataFilterITS.cxx:288
 AliAlignmentDataFilterITS.cxx:289
 AliAlignmentDataFilterITS.cxx:290
 AliAlignmentDataFilterITS.cxx:291
 AliAlignmentDataFilterITS.cxx:292
 AliAlignmentDataFilterITS.cxx:293
 AliAlignmentDataFilterITS.cxx:294
 AliAlignmentDataFilterITS.cxx:295
 AliAlignmentDataFilterITS.cxx:296
 AliAlignmentDataFilterITS.cxx:297
 AliAlignmentDataFilterITS.cxx:298
 AliAlignmentDataFilterITS.cxx:299
 AliAlignmentDataFilterITS.cxx:300
 AliAlignmentDataFilterITS.cxx:301
 AliAlignmentDataFilterITS.cxx:302
 AliAlignmentDataFilterITS.cxx:303
 AliAlignmentDataFilterITS.cxx:304
 AliAlignmentDataFilterITS.cxx:305
 AliAlignmentDataFilterITS.cxx:306
 AliAlignmentDataFilterITS.cxx:307
 AliAlignmentDataFilterITS.cxx:308
 AliAlignmentDataFilterITS.cxx:309
 AliAlignmentDataFilterITS.cxx:310
 AliAlignmentDataFilterITS.cxx:311
 AliAlignmentDataFilterITS.cxx:312
 AliAlignmentDataFilterITS.cxx:313
 AliAlignmentDataFilterITS.cxx:314
 AliAlignmentDataFilterITS.cxx:315
 AliAlignmentDataFilterITS.cxx:316
 AliAlignmentDataFilterITS.cxx:317
 AliAlignmentDataFilterITS.cxx:318
 AliAlignmentDataFilterITS.cxx:319
 AliAlignmentDataFilterITS.cxx:320
 AliAlignmentDataFilterITS.cxx:321
 AliAlignmentDataFilterITS.cxx:322
 AliAlignmentDataFilterITS.cxx:323
 AliAlignmentDataFilterITS.cxx:324
 AliAlignmentDataFilterITS.cxx:325
 AliAlignmentDataFilterITS.cxx:326
 AliAlignmentDataFilterITS.cxx:327
 AliAlignmentDataFilterITS.cxx:328
 AliAlignmentDataFilterITS.cxx:329
 AliAlignmentDataFilterITS.cxx:330
 AliAlignmentDataFilterITS.cxx:331
 AliAlignmentDataFilterITS.cxx:332
 AliAlignmentDataFilterITS.cxx:333
 AliAlignmentDataFilterITS.cxx:334
 AliAlignmentDataFilterITS.cxx:335
 AliAlignmentDataFilterITS.cxx:336
 AliAlignmentDataFilterITS.cxx:337
 AliAlignmentDataFilterITS.cxx:338
 AliAlignmentDataFilterITS.cxx:339
 AliAlignmentDataFilterITS.cxx:340
 AliAlignmentDataFilterITS.cxx:341
 AliAlignmentDataFilterITS.cxx:342
 AliAlignmentDataFilterITS.cxx:343
 AliAlignmentDataFilterITS.cxx:344
 AliAlignmentDataFilterITS.cxx:345
 AliAlignmentDataFilterITS.cxx:346
 AliAlignmentDataFilterITS.cxx:347
 AliAlignmentDataFilterITS.cxx:348
 AliAlignmentDataFilterITS.cxx:349
 AliAlignmentDataFilterITS.cxx:350
 AliAlignmentDataFilterITS.cxx:351
 AliAlignmentDataFilterITS.cxx:352
 AliAlignmentDataFilterITS.cxx:353
 AliAlignmentDataFilterITS.cxx:354
 AliAlignmentDataFilterITS.cxx:355
 AliAlignmentDataFilterITS.cxx:356
 AliAlignmentDataFilterITS.cxx:357
 AliAlignmentDataFilterITS.cxx:358
 AliAlignmentDataFilterITS.cxx:359
 AliAlignmentDataFilterITS.cxx:360
 AliAlignmentDataFilterITS.cxx:361
 AliAlignmentDataFilterITS.cxx:362
 AliAlignmentDataFilterITS.cxx:363
 AliAlignmentDataFilterITS.cxx:364
 AliAlignmentDataFilterITS.cxx:365
 AliAlignmentDataFilterITS.cxx:366
 AliAlignmentDataFilterITS.cxx:367
 AliAlignmentDataFilterITS.cxx:368
 AliAlignmentDataFilterITS.cxx:369
 AliAlignmentDataFilterITS.cxx:370
 AliAlignmentDataFilterITS.cxx:371
 AliAlignmentDataFilterITS.cxx:372
 AliAlignmentDataFilterITS.cxx:373
 AliAlignmentDataFilterITS.cxx:374
 AliAlignmentDataFilterITS.cxx:375
 AliAlignmentDataFilterITS.cxx:376
 AliAlignmentDataFilterITS.cxx:377
 AliAlignmentDataFilterITS.cxx:378
 AliAlignmentDataFilterITS.cxx:379
 AliAlignmentDataFilterITS.cxx:380
 AliAlignmentDataFilterITS.cxx:381
 AliAlignmentDataFilterITS.cxx:382
 AliAlignmentDataFilterITS.cxx:383
 AliAlignmentDataFilterITS.cxx:384
 AliAlignmentDataFilterITS.cxx:385
 AliAlignmentDataFilterITS.cxx:386
 AliAlignmentDataFilterITS.cxx:387
 AliAlignmentDataFilterITS.cxx:388
 AliAlignmentDataFilterITS.cxx:389
 AliAlignmentDataFilterITS.cxx:390
 AliAlignmentDataFilterITS.cxx:391
 AliAlignmentDataFilterITS.cxx:392
 AliAlignmentDataFilterITS.cxx:393
 AliAlignmentDataFilterITS.cxx:394
 AliAlignmentDataFilterITS.cxx:395
 AliAlignmentDataFilterITS.cxx:396
 AliAlignmentDataFilterITS.cxx:397
 AliAlignmentDataFilterITS.cxx:398
 AliAlignmentDataFilterITS.cxx:399
 AliAlignmentDataFilterITS.cxx:400
 AliAlignmentDataFilterITS.cxx:401
 AliAlignmentDataFilterITS.cxx:402
 AliAlignmentDataFilterITS.cxx:403
 AliAlignmentDataFilterITS.cxx:404
 AliAlignmentDataFilterITS.cxx:405
 AliAlignmentDataFilterITS.cxx:406
 AliAlignmentDataFilterITS.cxx:407
 AliAlignmentDataFilterITS.cxx:408
 AliAlignmentDataFilterITS.cxx:409
 AliAlignmentDataFilterITS.cxx:410
 AliAlignmentDataFilterITS.cxx:411
 AliAlignmentDataFilterITS.cxx:412
 AliAlignmentDataFilterITS.cxx:413
 AliAlignmentDataFilterITS.cxx:414
 AliAlignmentDataFilterITS.cxx:415
 AliAlignmentDataFilterITS.cxx:416
 AliAlignmentDataFilterITS.cxx:417
 AliAlignmentDataFilterITS.cxx:418
 AliAlignmentDataFilterITS.cxx:419
 AliAlignmentDataFilterITS.cxx:420
 AliAlignmentDataFilterITS.cxx:421
 AliAlignmentDataFilterITS.cxx:422
 AliAlignmentDataFilterITS.cxx:423
 AliAlignmentDataFilterITS.cxx:424
 AliAlignmentDataFilterITS.cxx:425
 AliAlignmentDataFilterITS.cxx:426
 AliAlignmentDataFilterITS.cxx:427
 AliAlignmentDataFilterITS.cxx:428
 AliAlignmentDataFilterITS.cxx:429
 AliAlignmentDataFilterITS.cxx:430
 AliAlignmentDataFilterITS.cxx:431
 AliAlignmentDataFilterITS.cxx:432
 AliAlignmentDataFilterITS.cxx:433
 AliAlignmentDataFilterITS.cxx:434
 AliAlignmentDataFilterITS.cxx:435
 AliAlignmentDataFilterITS.cxx:436
 AliAlignmentDataFilterITS.cxx:437
 AliAlignmentDataFilterITS.cxx:438
 AliAlignmentDataFilterITS.cxx:439
 AliAlignmentDataFilterITS.cxx:440
 AliAlignmentDataFilterITS.cxx:441
 AliAlignmentDataFilterITS.cxx:442
 AliAlignmentDataFilterITS.cxx:443
 AliAlignmentDataFilterITS.cxx:444
 AliAlignmentDataFilterITS.cxx:445
 AliAlignmentDataFilterITS.cxx:446
 AliAlignmentDataFilterITS.cxx:447
 AliAlignmentDataFilterITS.cxx:448
 AliAlignmentDataFilterITS.cxx:449
 AliAlignmentDataFilterITS.cxx:450
 AliAlignmentDataFilterITS.cxx:451
 AliAlignmentDataFilterITS.cxx:452
 AliAlignmentDataFilterITS.cxx:453
 AliAlignmentDataFilterITS.cxx:454
 AliAlignmentDataFilterITS.cxx:455
 AliAlignmentDataFilterITS.cxx:456
 AliAlignmentDataFilterITS.cxx:457
 AliAlignmentDataFilterITS.cxx:458
 AliAlignmentDataFilterITS.cxx:459
 AliAlignmentDataFilterITS.cxx:460
 AliAlignmentDataFilterITS.cxx:461
 AliAlignmentDataFilterITS.cxx:462
 AliAlignmentDataFilterITS.cxx:463
 AliAlignmentDataFilterITS.cxx:464
 AliAlignmentDataFilterITS.cxx:465
 AliAlignmentDataFilterITS.cxx:466
 AliAlignmentDataFilterITS.cxx:467
 AliAlignmentDataFilterITS.cxx:468
 AliAlignmentDataFilterITS.cxx:469
 AliAlignmentDataFilterITS.cxx:470
 AliAlignmentDataFilterITS.cxx:471
 AliAlignmentDataFilterITS.cxx:472
 AliAlignmentDataFilterITS.cxx:473
 AliAlignmentDataFilterITS.cxx:474
 AliAlignmentDataFilterITS.cxx:475
 AliAlignmentDataFilterITS.cxx:476
 AliAlignmentDataFilterITS.cxx:477
 AliAlignmentDataFilterITS.cxx:478
 AliAlignmentDataFilterITS.cxx:479
 AliAlignmentDataFilterITS.cxx:480
 AliAlignmentDataFilterITS.cxx:481
 AliAlignmentDataFilterITS.cxx:482
 AliAlignmentDataFilterITS.cxx:483
 AliAlignmentDataFilterITS.cxx:484
 AliAlignmentDataFilterITS.cxx:485
 AliAlignmentDataFilterITS.cxx:486
 AliAlignmentDataFilterITS.cxx:487
 AliAlignmentDataFilterITS.cxx:488
 AliAlignmentDataFilterITS.cxx:489
 AliAlignmentDataFilterITS.cxx:490
 AliAlignmentDataFilterITS.cxx:491
 AliAlignmentDataFilterITS.cxx:492
 AliAlignmentDataFilterITS.cxx:493
 AliAlignmentDataFilterITS.cxx:494
 AliAlignmentDataFilterITS.cxx:495
 AliAlignmentDataFilterITS.cxx:496
 AliAlignmentDataFilterITS.cxx:497
 AliAlignmentDataFilterITS.cxx:498
 AliAlignmentDataFilterITS.cxx:499
 AliAlignmentDataFilterITS.cxx:500
 AliAlignmentDataFilterITS.cxx:501
 AliAlignmentDataFilterITS.cxx:502
 AliAlignmentDataFilterITS.cxx:503
 AliAlignmentDataFilterITS.cxx:504
 AliAlignmentDataFilterITS.cxx:505
 AliAlignmentDataFilterITS.cxx:506
 AliAlignmentDataFilterITS.cxx:507
 AliAlignmentDataFilterITS.cxx:508
 AliAlignmentDataFilterITS.cxx:509
 AliAlignmentDataFilterITS.cxx:510
 AliAlignmentDataFilterITS.cxx:511
 AliAlignmentDataFilterITS.cxx:512
 AliAlignmentDataFilterITS.cxx:513
 AliAlignmentDataFilterITS.cxx:514
 AliAlignmentDataFilterITS.cxx:515
 AliAlignmentDataFilterITS.cxx:516
 AliAlignmentDataFilterITS.cxx:517
 AliAlignmentDataFilterITS.cxx:518
 AliAlignmentDataFilterITS.cxx:519
 AliAlignmentDataFilterITS.cxx:520
 AliAlignmentDataFilterITS.cxx:521
 AliAlignmentDataFilterITS.cxx:522
 AliAlignmentDataFilterITS.cxx:523
 AliAlignmentDataFilterITS.cxx:524
 AliAlignmentDataFilterITS.cxx:525
 AliAlignmentDataFilterITS.cxx:526
 AliAlignmentDataFilterITS.cxx:527
 AliAlignmentDataFilterITS.cxx:528
 AliAlignmentDataFilterITS.cxx:529
 AliAlignmentDataFilterITS.cxx:530
 AliAlignmentDataFilterITS.cxx:531
 AliAlignmentDataFilterITS.cxx:532
 AliAlignmentDataFilterITS.cxx:533
 AliAlignmentDataFilterITS.cxx:534
 AliAlignmentDataFilterITS.cxx:535
 AliAlignmentDataFilterITS.cxx:536
 AliAlignmentDataFilterITS.cxx:537
 AliAlignmentDataFilterITS.cxx:538
 AliAlignmentDataFilterITS.cxx:539
 AliAlignmentDataFilterITS.cxx:540
 AliAlignmentDataFilterITS.cxx:541
 AliAlignmentDataFilterITS.cxx:542
 AliAlignmentDataFilterITS.cxx:543
 AliAlignmentDataFilterITS.cxx:544
 AliAlignmentDataFilterITS.cxx:545
 AliAlignmentDataFilterITS.cxx:546
 AliAlignmentDataFilterITS.cxx:547
 AliAlignmentDataFilterITS.cxx:548
 AliAlignmentDataFilterITS.cxx:549
 AliAlignmentDataFilterITS.cxx:550
 AliAlignmentDataFilterITS.cxx:551
 AliAlignmentDataFilterITS.cxx:552
 AliAlignmentDataFilterITS.cxx:553
 AliAlignmentDataFilterITS.cxx:554
 AliAlignmentDataFilterITS.cxx:555
 AliAlignmentDataFilterITS.cxx:556
 AliAlignmentDataFilterITS.cxx:557
 AliAlignmentDataFilterITS.cxx:558
 AliAlignmentDataFilterITS.cxx:559
 AliAlignmentDataFilterITS.cxx:560
 AliAlignmentDataFilterITS.cxx:561
 AliAlignmentDataFilterITS.cxx:562
 AliAlignmentDataFilterITS.cxx:563
 AliAlignmentDataFilterITS.cxx:564
 AliAlignmentDataFilterITS.cxx:565
 AliAlignmentDataFilterITS.cxx:566
 AliAlignmentDataFilterITS.cxx:567
 AliAlignmentDataFilterITS.cxx:568
 AliAlignmentDataFilterITS.cxx:569
 AliAlignmentDataFilterITS.cxx:570
 AliAlignmentDataFilterITS.cxx:571
 AliAlignmentDataFilterITS.cxx:572
 AliAlignmentDataFilterITS.cxx:573
 AliAlignmentDataFilterITS.cxx:574
 AliAlignmentDataFilterITS.cxx:575
 AliAlignmentDataFilterITS.cxx:576
 AliAlignmentDataFilterITS.cxx:577
 AliAlignmentDataFilterITS.cxx:578
 AliAlignmentDataFilterITS.cxx:579
 AliAlignmentDataFilterITS.cxx:580
 AliAlignmentDataFilterITS.cxx:581
 AliAlignmentDataFilterITS.cxx:582
 AliAlignmentDataFilterITS.cxx:583
 AliAlignmentDataFilterITS.cxx:584
 AliAlignmentDataFilterITS.cxx:585
 AliAlignmentDataFilterITS.cxx:586
 AliAlignmentDataFilterITS.cxx:587
 AliAlignmentDataFilterITS.cxx:588
 AliAlignmentDataFilterITS.cxx:589
 AliAlignmentDataFilterITS.cxx:590
 AliAlignmentDataFilterITS.cxx:591
 AliAlignmentDataFilterITS.cxx:592
 AliAlignmentDataFilterITS.cxx:593
 AliAlignmentDataFilterITS.cxx:594
 AliAlignmentDataFilterITS.cxx:595
 AliAlignmentDataFilterITS.cxx:596
 AliAlignmentDataFilterITS.cxx:597
 AliAlignmentDataFilterITS.cxx:598
 AliAlignmentDataFilterITS.cxx:599
 AliAlignmentDataFilterITS.cxx:600
 AliAlignmentDataFilterITS.cxx:601
 AliAlignmentDataFilterITS.cxx:602
 AliAlignmentDataFilterITS.cxx:603
 AliAlignmentDataFilterITS.cxx:604
 AliAlignmentDataFilterITS.cxx:605
 AliAlignmentDataFilterITS.cxx:606
 AliAlignmentDataFilterITS.cxx:607
 AliAlignmentDataFilterITS.cxx:608
 AliAlignmentDataFilterITS.cxx:609
 AliAlignmentDataFilterITS.cxx:610
 AliAlignmentDataFilterITS.cxx:611
 AliAlignmentDataFilterITS.cxx:612
 AliAlignmentDataFilterITS.cxx:613
 AliAlignmentDataFilterITS.cxx:614
 AliAlignmentDataFilterITS.cxx:615
 AliAlignmentDataFilterITS.cxx:616
 AliAlignmentDataFilterITS.cxx:617
 AliAlignmentDataFilterITS.cxx:618
 AliAlignmentDataFilterITS.cxx:619
 AliAlignmentDataFilterITS.cxx:620
 AliAlignmentDataFilterITS.cxx:621
 AliAlignmentDataFilterITS.cxx:622
 AliAlignmentDataFilterITS.cxx:623
 AliAlignmentDataFilterITS.cxx:624
 AliAlignmentDataFilterITS.cxx:625
 AliAlignmentDataFilterITS.cxx:626
 AliAlignmentDataFilterITS.cxx:627
 AliAlignmentDataFilterITS.cxx:628
 AliAlignmentDataFilterITS.cxx:629
 AliAlignmentDataFilterITS.cxx:630
 AliAlignmentDataFilterITS.cxx:631
 AliAlignmentDataFilterITS.cxx:632
 AliAlignmentDataFilterITS.cxx:633
 AliAlignmentDataFilterITS.cxx:634
 AliAlignmentDataFilterITS.cxx:635
 AliAlignmentDataFilterITS.cxx:636
 AliAlignmentDataFilterITS.cxx:637
 AliAlignmentDataFilterITS.cxx:638
 AliAlignmentDataFilterITS.cxx:639
 AliAlignmentDataFilterITS.cxx:640
 AliAlignmentDataFilterITS.cxx:641
 AliAlignmentDataFilterITS.cxx:642
 AliAlignmentDataFilterITS.cxx:643
 AliAlignmentDataFilterITS.cxx:644
 AliAlignmentDataFilterITS.cxx:645
 AliAlignmentDataFilterITS.cxx:646
 AliAlignmentDataFilterITS.cxx:647
 AliAlignmentDataFilterITS.cxx:648
 AliAlignmentDataFilterITS.cxx:649
 AliAlignmentDataFilterITS.cxx:650
 AliAlignmentDataFilterITS.cxx:651
 AliAlignmentDataFilterITS.cxx:652
 AliAlignmentDataFilterITS.cxx:653
 AliAlignmentDataFilterITS.cxx:654
 AliAlignmentDataFilterITS.cxx:655
 AliAlignmentDataFilterITS.cxx:656
 AliAlignmentDataFilterITS.cxx:657
 AliAlignmentDataFilterITS.cxx:658
 AliAlignmentDataFilterITS.cxx:659
 AliAlignmentDataFilterITS.cxx:660
 AliAlignmentDataFilterITS.cxx:661
 AliAlignmentDataFilterITS.cxx:662
 AliAlignmentDataFilterITS.cxx:663
 AliAlignmentDataFilterITS.cxx:664
 AliAlignmentDataFilterITS.cxx:665
 AliAlignmentDataFilterITS.cxx:666
 AliAlignmentDataFilterITS.cxx:667
 AliAlignmentDataFilterITS.cxx:668
 AliAlignmentDataFilterITS.cxx:669
 AliAlignmentDataFilterITS.cxx:670
 AliAlignmentDataFilterITS.cxx:671
 AliAlignmentDataFilterITS.cxx:672
 AliAlignmentDataFilterITS.cxx:673
 AliAlignmentDataFilterITS.cxx:674
 AliAlignmentDataFilterITS.cxx:675
 AliAlignmentDataFilterITS.cxx:676
 AliAlignmentDataFilterITS.cxx:677
 AliAlignmentDataFilterITS.cxx:678
 AliAlignmentDataFilterITS.cxx:679
 AliAlignmentDataFilterITS.cxx:680
 AliAlignmentDataFilterITS.cxx:681
 AliAlignmentDataFilterITS.cxx:682
 AliAlignmentDataFilterITS.cxx:683
 AliAlignmentDataFilterITS.cxx:684
 AliAlignmentDataFilterITS.cxx:685
 AliAlignmentDataFilterITS.cxx:686
 AliAlignmentDataFilterITS.cxx:687
 AliAlignmentDataFilterITS.cxx:688
 AliAlignmentDataFilterITS.cxx:689
 AliAlignmentDataFilterITS.cxx:690
 AliAlignmentDataFilterITS.cxx:691
 AliAlignmentDataFilterITS.cxx:692
 AliAlignmentDataFilterITS.cxx:693
 AliAlignmentDataFilterITS.cxx:694
 AliAlignmentDataFilterITS.cxx:695
 AliAlignmentDataFilterITS.cxx:696
 AliAlignmentDataFilterITS.cxx:697
 AliAlignmentDataFilterITS.cxx:698
 AliAlignmentDataFilterITS.cxx:699
 AliAlignmentDataFilterITS.cxx:700
 AliAlignmentDataFilterITS.cxx:701
 AliAlignmentDataFilterITS.cxx:702
 AliAlignmentDataFilterITS.cxx:703
 AliAlignmentDataFilterITS.cxx:704
 AliAlignmentDataFilterITS.cxx:705
 AliAlignmentDataFilterITS.cxx:706
 AliAlignmentDataFilterITS.cxx:707
 AliAlignmentDataFilterITS.cxx:708
 AliAlignmentDataFilterITS.cxx:709
 AliAlignmentDataFilterITS.cxx:710
 AliAlignmentDataFilterITS.cxx:711
 AliAlignmentDataFilterITS.cxx:712
 AliAlignmentDataFilterITS.cxx:713
 AliAlignmentDataFilterITS.cxx:714
 AliAlignmentDataFilterITS.cxx:715
 AliAlignmentDataFilterITS.cxx:716
 AliAlignmentDataFilterITS.cxx:717
 AliAlignmentDataFilterITS.cxx:718
 AliAlignmentDataFilterITS.cxx:719
 AliAlignmentDataFilterITS.cxx:720
 AliAlignmentDataFilterITS.cxx:721
 AliAlignmentDataFilterITS.cxx:722
 AliAlignmentDataFilterITS.cxx:723
 AliAlignmentDataFilterITS.cxx:724
 AliAlignmentDataFilterITS.cxx:725
 AliAlignmentDataFilterITS.cxx:726
 AliAlignmentDataFilterITS.cxx:727
 AliAlignmentDataFilterITS.cxx:728
 AliAlignmentDataFilterITS.cxx:729
 AliAlignmentDataFilterITS.cxx:730
 AliAlignmentDataFilterITS.cxx:731
 AliAlignmentDataFilterITS.cxx:732
 AliAlignmentDataFilterITS.cxx:733
 AliAlignmentDataFilterITS.cxx:734
 AliAlignmentDataFilterITS.cxx:735
 AliAlignmentDataFilterITS.cxx:736
 AliAlignmentDataFilterITS.cxx:737
 AliAlignmentDataFilterITS.cxx:738
 AliAlignmentDataFilterITS.cxx:739
 AliAlignmentDataFilterITS.cxx:740
 AliAlignmentDataFilterITS.cxx:741
 AliAlignmentDataFilterITS.cxx:742
 AliAlignmentDataFilterITS.cxx:743
 AliAlignmentDataFilterITS.cxx:744
 AliAlignmentDataFilterITS.cxx:745
 AliAlignmentDataFilterITS.cxx:746
 AliAlignmentDataFilterITS.cxx:747
 AliAlignmentDataFilterITS.cxx:748
 AliAlignmentDataFilterITS.cxx:749
 AliAlignmentDataFilterITS.cxx:750
 AliAlignmentDataFilterITS.cxx:751
 AliAlignmentDataFilterITS.cxx:752
 AliAlignmentDataFilterITS.cxx:753
 AliAlignmentDataFilterITS.cxx:754
 AliAlignmentDataFilterITS.cxx:755
 AliAlignmentDataFilterITS.cxx:756
 AliAlignmentDataFilterITS.cxx:757
 AliAlignmentDataFilterITS.cxx:758
 AliAlignmentDataFilterITS.cxx:759
 AliAlignmentDataFilterITS.cxx:760
 AliAlignmentDataFilterITS.cxx:761
 AliAlignmentDataFilterITS.cxx:762
 AliAlignmentDataFilterITS.cxx:763
 AliAlignmentDataFilterITS.cxx:764
 AliAlignmentDataFilterITS.cxx:765
 AliAlignmentDataFilterITS.cxx:766
 AliAlignmentDataFilterITS.cxx:767
 AliAlignmentDataFilterITS.cxx:768
 AliAlignmentDataFilterITS.cxx:769
 AliAlignmentDataFilterITS.cxx:770
 AliAlignmentDataFilterITS.cxx:771
 AliAlignmentDataFilterITS.cxx:772
 AliAlignmentDataFilterITS.cxx:773
 AliAlignmentDataFilterITS.cxx:774
 AliAlignmentDataFilterITS.cxx:775
 AliAlignmentDataFilterITS.cxx:776
 AliAlignmentDataFilterITS.cxx:777
 AliAlignmentDataFilterITS.cxx:778
 AliAlignmentDataFilterITS.cxx:779
 AliAlignmentDataFilterITS.cxx:780
 AliAlignmentDataFilterITS.cxx:781
 AliAlignmentDataFilterITS.cxx:782
 AliAlignmentDataFilterITS.cxx:783
 AliAlignmentDataFilterITS.cxx:784
 AliAlignmentDataFilterITS.cxx:785
 AliAlignmentDataFilterITS.cxx:786
 AliAlignmentDataFilterITS.cxx:787
 AliAlignmentDataFilterITS.cxx:788
 AliAlignmentDataFilterITS.cxx:789
 AliAlignmentDataFilterITS.cxx:790
 AliAlignmentDataFilterITS.cxx:791
 AliAlignmentDataFilterITS.cxx:792
 AliAlignmentDataFilterITS.cxx:793
 AliAlignmentDataFilterITS.cxx:794
 AliAlignmentDataFilterITS.cxx:795
 AliAlignmentDataFilterITS.cxx:796
 AliAlignmentDataFilterITS.cxx:797
 AliAlignmentDataFilterITS.cxx:798
 AliAlignmentDataFilterITS.cxx:799
 AliAlignmentDataFilterITS.cxx:800
 AliAlignmentDataFilterITS.cxx:801
 AliAlignmentDataFilterITS.cxx:802
 AliAlignmentDataFilterITS.cxx:803
 AliAlignmentDataFilterITS.cxx:804
 AliAlignmentDataFilterITS.cxx:805
 AliAlignmentDataFilterITS.cxx:806
 AliAlignmentDataFilterITS.cxx:807
 AliAlignmentDataFilterITS.cxx:808
 AliAlignmentDataFilterITS.cxx:809
 AliAlignmentDataFilterITS.cxx:810
 AliAlignmentDataFilterITS.cxx:811
 AliAlignmentDataFilterITS.cxx:812
 AliAlignmentDataFilterITS.cxx:813
 AliAlignmentDataFilterITS.cxx:814
 AliAlignmentDataFilterITS.cxx:815
 AliAlignmentDataFilterITS.cxx:816
 AliAlignmentDataFilterITS.cxx:817
 AliAlignmentDataFilterITS.cxx:818
 AliAlignmentDataFilterITS.cxx:819
 AliAlignmentDataFilterITS.cxx:820
 AliAlignmentDataFilterITS.cxx:821
 AliAlignmentDataFilterITS.cxx:822
 AliAlignmentDataFilterITS.cxx:823
 AliAlignmentDataFilterITS.cxx:824
 AliAlignmentDataFilterITS.cxx:825
 AliAlignmentDataFilterITS.cxx:826
 AliAlignmentDataFilterITS.cxx:827
 AliAlignmentDataFilterITS.cxx:828
 AliAlignmentDataFilterITS.cxx:829
 AliAlignmentDataFilterITS.cxx:830
 AliAlignmentDataFilterITS.cxx:831
 AliAlignmentDataFilterITS.cxx:832
 AliAlignmentDataFilterITS.cxx:833
 AliAlignmentDataFilterITS.cxx:834
 AliAlignmentDataFilterITS.cxx:835
 AliAlignmentDataFilterITS.cxx:836
 AliAlignmentDataFilterITS.cxx:837
 AliAlignmentDataFilterITS.cxx:838
 AliAlignmentDataFilterITS.cxx:839
 AliAlignmentDataFilterITS.cxx:840
 AliAlignmentDataFilterITS.cxx:841
 AliAlignmentDataFilterITS.cxx:842
 AliAlignmentDataFilterITS.cxx:843
 AliAlignmentDataFilterITS.cxx:844
 AliAlignmentDataFilterITS.cxx:845
 AliAlignmentDataFilterITS.cxx:846
 AliAlignmentDataFilterITS.cxx:847
 AliAlignmentDataFilterITS.cxx:848
 AliAlignmentDataFilterITS.cxx:849
 AliAlignmentDataFilterITS.cxx:850
 AliAlignmentDataFilterITS.cxx:851
 AliAlignmentDataFilterITS.cxx:852
 AliAlignmentDataFilterITS.cxx:853
 AliAlignmentDataFilterITS.cxx:854
 AliAlignmentDataFilterITS.cxx:855
 AliAlignmentDataFilterITS.cxx:856
 AliAlignmentDataFilterITS.cxx:857
 AliAlignmentDataFilterITS.cxx:858
 AliAlignmentDataFilterITS.cxx:859
 AliAlignmentDataFilterITS.cxx:860
 AliAlignmentDataFilterITS.cxx:861
 AliAlignmentDataFilterITS.cxx:862
 AliAlignmentDataFilterITS.cxx:863
 AliAlignmentDataFilterITS.cxx:864
 AliAlignmentDataFilterITS.cxx:865
 AliAlignmentDataFilterITS.cxx:866
 AliAlignmentDataFilterITS.cxx:867
 AliAlignmentDataFilterITS.cxx:868
 AliAlignmentDataFilterITS.cxx:869
 AliAlignmentDataFilterITS.cxx:870
 AliAlignmentDataFilterITS.cxx:871
 AliAlignmentDataFilterITS.cxx:872
 AliAlignmentDataFilterITS.cxx:873
 AliAlignmentDataFilterITS.cxx:874
 AliAlignmentDataFilterITS.cxx:875
 AliAlignmentDataFilterITS.cxx:876
 AliAlignmentDataFilterITS.cxx:877
 AliAlignmentDataFilterITS.cxx:878
 AliAlignmentDataFilterITS.cxx:879
 AliAlignmentDataFilterITS.cxx:880
 AliAlignmentDataFilterITS.cxx:881
 AliAlignmentDataFilterITS.cxx:882
 AliAlignmentDataFilterITS.cxx:883
 AliAlignmentDataFilterITS.cxx:884
 AliAlignmentDataFilterITS.cxx:885
 AliAlignmentDataFilterITS.cxx:886
 AliAlignmentDataFilterITS.cxx:887
 AliAlignmentDataFilterITS.cxx:888
 AliAlignmentDataFilterITS.cxx:889
 AliAlignmentDataFilterITS.cxx:890
 AliAlignmentDataFilterITS.cxx:891
 AliAlignmentDataFilterITS.cxx:892
 AliAlignmentDataFilterITS.cxx:893
 AliAlignmentDataFilterITS.cxx:894
 AliAlignmentDataFilterITS.cxx:895
 AliAlignmentDataFilterITS.cxx:896
 AliAlignmentDataFilterITS.cxx:897
 AliAlignmentDataFilterITS.cxx:898
 AliAlignmentDataFilterITS.cxx:899
 AliAlignmentDataFilterITS.cxx:900
 AliAlignmentDataFilterITS.cxx:901
 AliAlignmentDataFilterITS.cxx:902
 AliAlignmentDataFilterITS.cxx:903
 AliAlignmentDataFilterITS.cxx:904
 AliAlignmentDataFilterITS.cxx:905
 AliAlignmentDataFilterITS.cxx:906
 AliAlignmentDataFilterITS.cxx:907
 AliAlignmentDataFilterITS.cxx:908
 AliAlignmentDataFilterITS.cxx:909
 AliAlignmentDataFilterITS.cxx:910
 AliAlignmentDataFilterITS.cxx:911
 AliAlignmentDataFilterITS.cxx:912
 AliAlignmentDataFilterITS.cxx:913
 AliAlignmentDataFilterITS.cxx:914
 AliAlignmentDataFilterITS.cxx:915
 AliAlignmentDataFilterITS.cxx:916
 AliAlignmentDataFilterITS.cxx:917
 AliAlignmentDataFilterITS.cxx:918
 AliAlignmentDataFilterITS.cxx:919
 AliAlignmentDataFilterITS.cxx:920
 AliAlignmentDataFilterITS.cxx:921
 AliAlignmentDataFilterITS.cxx:922
 AliAlignmentDataFilterITS.cxx:923
 AliAlignmentDataFilterITS.cxx:924
 AliAlignmentDataFilterITS.cxx:925
 AliAlignmentDataFilterITS.cxx:926
 AliAlignmentDataFilterITS.cxx:927
 AliAlignmentDataFilterITS.cxx:928
 AliAlignmentDataFilterITS.cxx:929
 AliAlignmentDataFilterITS.cxx:930
 AliAlignmentDataFilterITS.cxx:931
 AliAlignmentDataFilterITS.cxx:932
 AliAlignmentDataFilterITS.cxx:933
 AliAlignmentDataFilterITS.cxx:934
 AliAlignmentDataFilterITS.cxx:935
 AliAlignmentDataFilterITS.cxx:936
 AliAlignmentDataFilterITS.cxx:937
 AliAlignmentDataFilterITS.cxx:938
 AliAlignmentDataFilterITS.cxx:939
 AliAlignmentDataFilterITS.cxx:940
 AliAlignmentDataFilterITS.cxx:941
 AliAlignmentDataFilterITS.cxx:942
 AliAlignmentDataFilterITS.cxx:943
 AliAlignmentDataFilterITS.cxx:944
 AliAlignmentDataFilterITS.cxx:945
 AliAlignmentDataFilterITS.cxx:946
 AliAlignmentDataFilterITS.cxx:947
 AliAlignmentDataFilterITS.cxx:948
 AliAlignmentDataFilterITS.cxx:949
 AliAlignmentDataFilterITS.cxx:950
 AliAlignmentDataFilterITS.cxx:951
 AliAlignmentDataFilterITS.cxx:952
 AliAlignmentDataFilterITS.cxx:953
 AliAlignmentDataFilterITS.cxx:954
 AliAlignmentDataFilterITS.cxx:955
 AliAlignmentDataFilterITS.cxx:956
 AliAlignmentDataFilterITS.cxx:957
 AliAlignmentDataFilterITS.cxx:958
 AliAlignmentDataFilterITS.cxx:959
 AliAlignmentDataFilterITS.cxx:960
 AliAlignmentDataFilterITS.cxx:961
 AliAlignmentDataFilterITS.cxx:962
 AliAlignmentDataFilterITS.cxx:963
 AliAlignmentDataFilterITS.cxx:964
 AliAlignmentDataFilterITS.cxx:965
 AliAlignmentDataFilterITS.cxx:966
 AliAlignmentDataFilterITS.cxx:967
 AliAlignmentDataFilterITS.cxx:968
 AliAlignmentDataFilterITS.cxx:969
 AliAlignmentDataFilterITS.cxx:970
 AliAlignmentDataFilterITS.cxx:971
 AliAlignmentDataFilterITS.cxx:972
 AliAlignmentDataFilterITS.cxx:973
 AliAlignmentDataFilterITS.cxx:974
 AliAlignmentDataFilterITS.cxx:975
 AliAlignmentDataFilterITS.cxx:976
 AliAlignmentDataFilterITS.cxx:977
 AliAlignmentDataFilterITS.cxx:978
 AliAlignmentDataFilterITS.cxx:979
 AliAlignmentDataFilterITS.cxx:980
 AliAlignmentDataFilterITS.cxx:981
 AliAlignmentDataFilterITS.cxx:982
 AliAlignmentDataFilterITS.cxx:983
 AliAlignmentDataFilterITS.cxx:984
 AliAlignmentDataFilterITS.cxx:985
 AliAlignmentDataFilterITS.cxx:986
 AliAlignmentDataFilterITS.cxx:987
 AliAlignmentDataFilterITS.cxx:988
 AliAlignmentDataFilterITS.cxx:989
 AliAlignmentDataFilterITS.cxx:990
 AliAlignmentDataFilterITS.cxx:991
 AliAlignmentDataFilterITS.cxx:992
 AliAlignmentDataFilterITS.cxx:993
 AliAlignmentDataFilterITS.cxx:994
 AliAlignmentDataFilterITS.cxx:995
 AliAlignmentDataFilterITS.cxx:996
 AliAlignmentDataFilterITS.cxx:997
 AliAlignmentDataFilterITS.cxx:998
 AliAlignmentDataFilterITS.cxx:999
 AliAlignmentDataFilterITS.cxx:1000
 AliAlignmentDataFilterITS.cxx:1001
 AliAlignmentDataFilterITS.cxx:1002
 AliAlignmentDataFilterITS.cxx:1003
 AliAlignmentDataFilterITS.cxx:1004
 AliAlignmentDataFilterITS.cxx:1005
 AliAlignmentDataFilterITS.cxx:1006
 AliAlignmentDataFilterITS.cxx:1007
 AliAlignmentDataFilterITS.cxx:1008
 AliAlignmentDataFilterITS.cxx:1009
 AliAlignmentDataFilterITS.cxx:1010
 AliAlignmentDataFilterITS.cxx:1011
 AliAlignmentDataFilterITS.cxx:1012
 AliAlignmentDataFilterITS.cxx:1013
 AliAlignmentDataFilterITS.cxx:1014
 AliAlignmentDataFilterITS.cxx:1015
 AliAlignmentDataFilterITS.cxx:1016
 AliAlignmentDataFilterITS.cxx:1017
 AliAlignmentDataFilterITS.cxx:1018
 AliAlignmentDataFilterITS.cxx:1019
 AliAlignmentDataFilterITS.cxx:1020
 AliAlignmentDataFilterITS.cxx:1021
 AliAlignmentDataFilterITS.cxx:1022
 AliAlignmentDataFilterITS.cxx:1023
 AliAlignmentDataFilterITS.cxx:1024
 AliAlignmentDataFilterITS.cxx:1025
 AliAlignmentDataFilterITS.cxx:1026
 AliAlignmentDataFilterITS.cxx:1027
 AliAlignmentDataFilterITS.cxx:1028
 AliAlignmentDataFilterITS.cxx:1029
 AliAlignmentDataFilterITS.cxx:1030
 AliAlignmentDataFilterITS.cxx:1031
 AliAlignmentDataFilterITS.cxx:1032
 AliAlignmentDataFilterITS.cxx:1033
 AliAlignmentDataFilterITS.cxx:1034
 AliAlignmentDataFilterITS.cxx:1035
 AliAlignmentDataFilterITS.cxx:1036
 AliAlignmentDataFilterITS.cxx:1037
 AliAlignmentDataFilterITS.cxx:1038
 AliAlignmentDataFilterITS.cxx:1039
 AliAlignmentDataFilterITS.cxx:1040
 AliAlignmentDataFilterITS.cxx:1041
 AliAlignmentDataFilterITS.cxx:1042
 AliAlignmentDataFilterITS.cxx:1043
 AliAlignmentDataFilterITS.cxx:1044
 AliAlignmentDataFilterITS.cxx:1045
 AliAlignmentDataFilterITS.cxx:1046
 AliAlignmentDataFilterITS.cxx:1047
 AliAlignmentDataFilterITS.cxx:1048
 AliAlignmentDataFilterITS.cxx:1049
 AliAlignmentDataFilterITS.cxx:1050
 AliAlignmentDataFilterITS.cxx:1051
 AliAlignmentDataFilterITS.cxx:1052
 AliAlignmentDataFilterITS.cxx:1053
 AliAlignmentDataFilterITS.cxx:1054
 AliAlignmentDataFilterITS.cxx:1055
 AliAlignmentDataFilterITS.cxx:1056
 AliAlignmentDataFilterITS.cxx:1057
 AliAlignmentDataFilterITS.cxx:1058
 AliAlignmentDataFilterITS.cxx:1059
 AliAlignmentDataFilterITS.cxx:1060
 AliAlignmentDataFilterITS.cxx:1061
 AliAlignmentDataFilterITS.cxx:1062
 AliAlignmentDataFilterITS.cxx:1063
 AliAlignmentDataFilterITS.cxx:1064
 AliAlignmentDataFilterITS.cxx:1065
 AliAlignmentDataFilterITS.cxx:1066
 AliAlignmentDataFilterITS.cxx:1067
 AliAlignmentDataFilterITS.cxx:1068
 AliAlignmentDataFilterITS.cxx:1069
 AliAlignmentDataFilterITS.cxx:1070
 AliAlignmentDataFilterITS.cxx:1071
 AliAlignmentDataFilterITS.cxx:1072
 AliAlignmentDataFilterITS.cxx:1073
 AliAlignmentDataFilterITS.cxx:1074
 AliAlignmentDataFilterITS.cxx:1075
 AliAlignmentDataFilterITS.cxx:1076
 AliAlignmentDataFilterITS.cxx:1077
 AliAlignmentDataFilterITS.cxx:1078
 AliAlignmentDataFilterITS.cxx:1079
 AliAlignmentDataFilterITS.cxx:1080
 AliAlignmentDataFilterITS.cxx:1081
 AliAlignmentDataFilterITS.cxx:1082
 AliAlignmentDataFilterITS.cxx:1083
 AliAlignmentDataFilterITS.cxx:1084
 AliAlignmentDataFilterITS.cxx:1085
 AliAlignmentDataFilterITS.cxx:1086
 AliAlignmentDataFilterITS.cxx:1087
 AliAlignmentDataFilterITS.cxx:1088
 AliAlignmentDataFilterITS.cxx:1089
 AliAlignmentDataFilterITS.cxx:1090
 AliAlignmentDataFilterITS.cxx:1091
 AliAlignmentDataFilterITS.cxx:1092
 AliAlignmentDataFilterITS.cxx:1093
 AliAlignmentDataFilterITS.cxx:1094
 AliAlignmentDataFilterITS.cxx:1095
 AliAlignmentDataFilterITS.cxx:1096
 AliAlignmentDataFilterITS.cxx:1097
 AliAlignmentDataFilterITS.cxx:1098
 AliAlignmentDataFilterITS.cxx:1099
 AliAlignmentDataFilterITS.cxx:1100
 AliAlignmentDataFilterITS.cxx:1101
 AliAlignmentDataFilterITS.cxx:1102
 AliAlignmentDataFilterITS.cxx:1103
 AliAlignmentDataFilterITS.cxx:1104
 AliAlignmentDataFilterITS.cxx:1105
 AliAlignmentDataFilterITS.cxx:1106
 AliAlignmentDataFilterITS.cxx:1107
 AliAlignmentDataFilterITS.cxx:1108
 AliAlignmentDataFilterITS.cxx:1109
 AliAlignmentDataFilterITS.cxx:1110
 AliAlignmentDataFilterITS.cxx:1111
 AliAlignmentDataFilterITS.cxx:1112
 AliAlignmentDataFilterITS.cxx:1113
 AliAlignmentDataFilterITS.cxx:1114
 AliAlignmentDataFilterITS.cxx:1115
 AliAlignmentDataFilterITS.cxx:1116
 AliAlignmentDataFilterITS.cxx:1117
 AliAlignmentDataFilterITS.cxx:1118
 AliAlignmentDataFilterITS.cxx:1119
 AliAlignmentDataFilterITS.cxx:1120
 AliAlignmentDataFilterITS.cxx:1121
 AliAlignmentDataFilterITS.cxx:1122
 AliAlignmentDataFilterITS.cxx:1123
 AliAlignmentDataFilterITS.cxx:1124
 AliAlignmentDataFilterITS.cxx:1125
 AliAlignmentDataFilterITS.cxx:1126
 AliAlignmentDataFilterITS.cxx:1127
 AliAlignmentDataFilterITS.cxx:1128
 AliAlignmentDataFilterITS.cxx:1129
 AliAlignmentDataFilterITS.cxx:1130
 AliAlignmentDataFilterITS.cxx:1131
 AliAlignmentDataFilterITS.cxx:1132
 AliAlignmentDataFilterITS.cxx:1133
 AliAlignmentDataFilterITS.cxx:1134
 AliAlignmentDataFilterITS.cxx:1135
 AliAlignmentDataFilterITS.cxx:1136
 AliAlignmentDataFilterITS.cxx:1137
 AliAlignmentDataFilterITS.cxx:1138
 AliAlignmentDataFilterITS.cxx:1139
 AliAlignmentDataFilterITS.cxx:1140
 AliAlignmentDataFilterITS.cxx:1141
 AliAlignmentDataFilterITS.cxx:1142
 AliAlignmentDataFilterITS.cxx:1143
 AliAlignmentDataFilterITS.cxx:1144
 AliAlignmentDataFilterITS.cxx:1145
 AliAlignmentDataFilterITS.cxx:1146
 AliAlignmentDataFilterITS.cxx:1147
 AliAlignmentDataFilterITS.cxx:1148
 AliAlignmentDataFilterITS.cxx:1149
 AliAlignmentDataFilterITS.cxx:1150
 AliAlignmentDataFilterITS.cxx:1151
 AliAlignmentDataFilterITS.cxx:1152
 AliAlignmentDataFilterITS.cxx:1153
 AliAlignmentDataFilterITS.cxx:1154
 AliAlignmentDataFilterITS.cxx:1155
 AliAlignmentDataFilterITS.cxx:1156
 AliAlignmentDataFilterITS.cxx:1157
 AliAlignmentDataFilterITS.cxx:1158
 AliAlignmentDataFilterITS.cxx:1159
 AliAlignmentDataFilterITS.cxx:1160
 AliAlignmentDataFilterITS.cxx:1161
 AliAlignmentDataFilterITS.cxx:1162
 AliAlignmentDataFilterITS.cxx:1163
 AliAlignmentDataFilterITS.cxx:1164
 AliAlignmentDataFilterITS.cxx:1165
 AliAlignmentDataFilterITS.cxx:1166
 AliAlignmentDataFilterITS.cxx:1167
 AliAlignmentDataFilterITS.cxx:1168
 AliAlignmentDataFilterITS.cxx:1169
 AliAlignmentDataFilterITS.cxx:1170
 AliAlignmentDataFilterITS.cxx:1171
 AliAlignmentDataFilterITS.cxx:1172
 AliAlignmentDataFilterITS.cxx:1173
 AliAlignmentDataFilterITS.cxx:1174
 AliAlignmentDataFilterITS.cxx:1175
 AliAlignmentDataFilterITS.cxx:1176
 AliAlignmentDataFilterITS.cxx:1177
 AliAlignmentDataFilterITS.cxx:1178
 AliAlignmentDataFilterITS.cxx:1179
 AliAlignmentDataFilterITS.cxx:1180
 AliAlignmentDataFilterITS.cxx:1181
 AliAlignmentDataFilterITS.cxx:1182
 AliAlignmentDataFilterITS.cxx:1183
 AliAlignmentDataFilterITS.cxx:1184
 AliAlignmentDataFilterITS.cxx:1185
 AliAlignmentDataFilterITS.cxx:1186
 AliAlignmentDataFilterITS.cxx:1187
 AliAlignmentDataFilterITS.cxx:1188
 AliAlignmentDataFilterITS.cxx:1189
 AliAlignmentDataFilterITS.cxx:1190
 AliAlignmentDataFilterITS.cxx:1191
 AliAlignmentDataFilterITS.cxx:1192
 AliAlignmentDataFilterITS.cxx:1193
 AliAlignmentDataFilterITS.cxx:1194
 AliAlignmentDataFilterITS.cxx:1195