]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAlignmentTracks.cxx
removal of obsolete classes - cleanup of AliITSClusterFinder.cxx
[u/mrichter/AliRoot.git] / STEER / AliAlignmentTracks.cxx
index ff8117630e2078f3a4d26a44200924630fc3700b..1836a314b719d66587634fe90f1d17c06eaf1e6a 100644 (file)
@@ -44,9 +44,11 @@ AliAlignmentTracks::AliAlignmentTracks():
   fLastIndex(0),
   fArrayIndex(0),
   fIsIndexBuilt(kFALSE),
+  fAlignObjs(0),
   fMisalignObjs(0),
   fTrackFitter(0),
-  fMinimizer(0)
+  fMinimizer(0),
+  fDoUpdate(kTRUE)
 {
   // Default constructor
   InitIndex();
@@ -62,9 +64,11 @@ AliAlignmentTracks::AliAlignmentTracks(TChain *esdchain):
   fLastIndex(0),
   fArrayIndex(0),
   fIsIndexBuilt(kFALSE),
+  fAlignObjs(0),
   fMisalignObjs(0),
   fTrackFitter(0),
-  fMinimizer(0)
+  fMinimizer(0),
+  fDoUpdate(kTRUE)
 {
   // Constructor in the case
   // the user provides an already
@@ -76,48 +80,28 @@ AliAlignmentTracks::AliAlignmentTracks(TChain *esdchain):
 
 //______________________________________________________________________________
 AliAlignmentTracks::AliAlignmentTracks(const char *esdfilename, const char *esdtreename):
+  fESDChain(new TChain(esdtreename)),
   fPointsFilename("AliTrackPoints.root"),
   fPointsFile(0),
   fPointsTree(0),
   fLastIndex(0),
   fArrayIndex(0),
   fIsIndexBuilt(kFALSE),
+  fAlignObjs(0),
   fMisalignObjs(0),
   fTrackFitter(0),
-  fMinimizer(0)
+  fMinimizer(0),
+  fDoUpdate(kTRUE)
 {
   // Constructor in the case
   // the user provides a single ESD file
   // or a directory containing ESD files
-  fESDChain = new TChain(esdtreename);
   fESDChain->Add(esdfilename);
 
   InitIndex();
   InitAlignObjs();
 }
 
-//______________________________________________________________________________
-AliAlignmentTracks::AliAlignmentTracks(const AliAlignmentTracks &alignment):
-  TObject(alignment)
-{
-  // Copy constructor
-  // not implemented
-  AliWarning("Copy constructor not implemented!");
-}
-
-//______________________________________________________________________________
-AliAlignmentTracks& AliAlignmentTracks::operator= (const AliAlignmentTracks& alignment)
-{
-  // Asignment operator
-  // not implemented
-  if(this==&alignment) return *this;
-
-  AliWarning("Asignment operator not implemented!");
-
-  ((TObject *)this)->operator=(alignment);
-
-  return *this;
-}
 
 //______________________________________________________________________________
 AliAlignmentTracks::~AliAlignmentTracks()
@@ -169,6 +153,9 @@ void AliAlignmentTracks::ProcessESD()
 
   AliESD *esd = 0;
   fESDChain->SetBranchAddress("ESD",&esd);
+  AliESDfriend *esdf = 0; 
+  fESDChain->SetBranchStatus("ESDfriend*",1);
+  fESDChain->SetBranchAddress("ESDfriend.",&esdf);
 
   // Open the output file
   if (fPointsFilename.Data() == "") {
@@ -185,10 +172,12 @@ void AliAlignmentTracks::ProcessESD()
   TTree *pointsTree = new TTree("spTree", "Tree with track space point arrays");
   const AliTrackPointArray *array = 0;
   pointsTree->Branch("SP","AliTrackPointArray", &array);
-
   Int_t ievent = 0;
   while (fESDChain->GetEntry(ievent++)) {
     if (!esd) break;
+
+    esd->SetESDfriend(esdf); //Attach the friend to the ESD
+
     Int_t ntracks = esd->GetNumberOfTracks();
     for (Int_t itrack=0; itrack < ntracks; itrack++) {
       AliESDtrack * track = esd->GetTrack(itrack);
@@ -233,7 +222,7 @@ void AliAlignmentTracks::BuildIndex()
   // to initialize the volume paths
   AliAlignObjAngles alobj;
 
-  TFile *fPointsFile = TFile::Open(fPointsFilename);
+  fPointsFile = TFile::Open(fPointsFilename);
   if (!fPointsFile || !fPointsFile->IsOpen()) {
     AliWarning(Form("Can't open %s !",fPointsFilename.Data()));
     return;
@@ -248,7 +237,7 @@ void AliAlignmentTracks::BuildIndex()
   }
   fPointsTree->SetBranchAddress("SP", &array);
 
-  Int_t nArrays = fPointsTree->GetEntries();
+  Int_t nArrays = (Int_t)fPointsTree->GetEntries();
   for (Int_t iArray = 0; iArray < nArrays; iArray++)
     {
       fPointsTree->GetEvent(iArray);
@@ -256,8 +245,8 @@ void AliAlignmentTracks::BuildIndex()
       for (Int_t ipoint = 0; ipoint < array->GetNPoints(); ipoint++) {
        UShort_t volId = array->GetVolumeID()[ipoint];
        // check if the volId is valid
-       if (!AliAlignObj::GetVolPath(volId)) {
-         AliError(Form("The volume id %d has no default volume path !",
+       if (!AliAlignObj::SymName(volId)) {
+         AliError(Form("The volume id %d has no default volume name !",
                        volId));
          continue;
        }
@@ -362,7 +351,7 @@ void AliAlignmentTracks::InitAlignObjs()
     fAlignObjs[iLayer] = new AliAlignObj*[AliAlignObj::LayerSize(iLayer + AliAlignObj::kFirstLayer)];
     for (Int_t iModule = 0; iModule < AliAlignObj::LayerSize(iLayer + AliAlignObj::kFirstLayer); iModule++) {
       UShort_t volid = AliAlignObj::LayerToVolUID(iLayer+ AliAlignObj::kFirstLayer,iModule);
-      fAlignObjs[iLayer][iModule] = new AliAlignObjAngles("",volid,0,0,0,0,0,0);
+      fAlignObjs[iLayer][iModule] = new AliAlignObjAngles(AliAlignObj::SymName(volid),volid,0,0,0,0,0,0,kTRUE);
     }
   }
 }
@@ -507,11 +496,11 @@ void AliAlignmentTracks::AlignVolumes(const TArrayI *volids, const TArrayI *voli
     minimizer->Minimize();
 
     // Update the alignment object(s)
-    for (Int_t iVolId = 0; iVolId < nVolIds; iVolId++) {
+    if (fDoUpdate) for (Int_t iVolId = 0; iVolId < nVolIds; iVolId++) {
       UShort_t volid = (*volids)[iVolId];
       Int_t iModule;
       AliAlignObj::ELayerID iLayer = AliAlignObj::VolUIDToLayer(volid,iModule);
-      AliAlignObj *alignObj = fAlignObjs[iLayer-AliAlignObj::kFirstLayer][iModule];
+      AliAlignObj *alignObj = fAlignObjs[iLayer-AliAlignObj::kFirstLayer][iModule];      
       *alignObj *= *minimizer->GetAlignObj();
       alignObj->Print("");
     }
@@ -572,7 +561,7 @@ Int_t AliAlignmentTracks::LoadPoints(const TArrayI *volids, AliTrackPointArray**
   for (Int_t i = 0; i < nArrays; i++) points[i] = 0x0;
 
   // Init the array used to flag already loaded tree entries
-  Bool_t *indexUsed = new Bool_t[fPointsTree->GetEntries()];
+  Bool_t *indexUsed = new Bool_t[(UInt_t)fPointsTree->GetEntries()];
   for (Int_t i = 0; i < fPointsTree->GetEntries(); i++)
     indexUsed[i] = kFALSE;