]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCLaserTrack.cxx
Fixes for building of DA (Anshul)
[u/mrichter/AliRoot.git] / TPC / AliTPCLaserTrack.cxx
index c21f3e9b52800c35d6ff706af9bd6991c9dbe390..4ce603349c168f3180bdab52deaa3ed93dcbaf55 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
+////////////////////////////////////////////////////////////////////////////
+//                                                                        //
+// Surveyed Laser Track positions                                         //
+// the position and direction information are stored in                   //
+// the AliExternalTrackParam base class                                   //
+// This class extends this information by identification parameters       //
+/*
+
+//Dump positions to a tree:
+AliTPCLaserTrack::LoadTracks();
+TObjArray *arr=AliTPCLaserTrack::GetTracks();
+TTreeSRedirector *s=new TTreeSRedirector("LaserTracks.root");
+TIter next(arr);
+TObject *o=0x0;
+while ( (o=next()) ) (*s) << "tracks" << "l.=" << o << "\n";
+delete s;
+
+//draw something
+TFile f("LaserTracks.root");
+TTree *tracks=(TTree*)f.Get("tracks");
+tracks->Draw("fVecGY.fElements:fVecGX.fElements");
+
+ tracks->Draw("fVecGY.fElements:fVecGX.fElements>>h(500,-250,250,500,-250,250)","fId<7")
+*/
+//                                                                        //
+////////////////////////////////////////////////////////////////////////////
+
 
 #include <TObjArray.h>
 #include <TFile.h>
@@ -20,6 +47,9 @@
 #include <TSystem.h>
 
 #include "AliLog.h"
+#include "AliCDBManager.h"
+#include "AliCDBEntry.h"
+#include "AliCDBPath.h"
 #include "AliTPCLaserTrack.h"
 #include "AliTPCROC.h"
 
@@ -46,7 +76,7 @@ AliTPCLaserTrack::AliTPCLaserTrack() :
   fVecLZ(0)        // points vectors - localZ
 {
   //
-  // Default constructor
+//   // Default constructor
   //
 
 }
@@ -142,37 +172,48 @@ AliTPCLaserTrack::~AliTPCLaserTrack(){
 
 void AliTPCLaserTrack::LoadTracks()
 {
-    //
-    // Load all design positions from file into the static array fgArrLaserTracks
-    //
-
-    if ( fgArrLaserTracks ) return;
-
-    TString dataFileName("$ALICE_ROOT/TPC/Calib/LaserTracks.root");  //Path to the Data File
-
-    TFile *f=TFile::Open(gSystem->ExpandPathName(dataFileName.Data()));
-    if ( !f || !f->IsOpen() ){
-//     AliWarning(Form("Could not open laser data file: '%s'",dataFileName.Data()));
-//     AliWarning("Could not open laser data file");
-       return;
+  //
+  // Load all design positions from file into the static array fgArrLaserTracks
+  //
+  
+  if ( fgArrLaserTracks ) return;
+  TObjArray *arrLaserTracks = 0x0;
+  
+  AliCDBManager *man=AliCDBManager::Instance();
+  if (!man->GetDefaultStorage() && gSystem->Getenv("ALICE_ROOT")) man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
+  if (man->GetDefaultStorage()){
+    if (man->GetRun()<0) man->SetRun(0);
+    AliCDBEntry *entry=man->Get(AliCDBPath("TPC/Calib/LaserTracks"));
+    if (!entry) return;
+    arrLaserTracks = (TObjArray*)entry->GetObject();
+    entry->SetOwner(kTRUE);
+  } else {
+    if (!gSystem->AccessPathName("LaserTracks.root")){
+      TFile f("LaserTracks.root");
+      arrLaserTracks=(TObjArray*)f.Get("arrLaserTracks");
+      f.Close();
     }
-    TObjArray *arrLaserTracks = (TObjArray*)f->Get("arrLaserTracks");
-    if ( !arrLaserTracks ) {
+  }
+  if ( !arrLaserTracks ) {
 //     AliWarning(Form("Could not get laser position data from file: '%s'",fgkDataFileName));
-        return;
-    }
-
-    fgArrLaserTracks = new TObjArray(fgkNLaserTracks);
-    for (Int_t itrack=0; itrack<fgkNLaserTracks; itrack++){
-       AliTPCLaserTrack *ltr = (AliTPCLaserTrack*)arrLaserTracks->At(itrack);
-       if ( !ltr ){
+    return;
+  }
+  
+  arrLaserTracks->SetOwner();
+  
+  fgArrLaserTracks = new TObjArray(fgkNLaserTracks);
+  fgArrLaserTracks->SetOwner();
+  for (Int_t itrack=0; itrack<fgkNLaserTracks; itrack++){
+    AliTPCLaserTrack *ltr = (AliTPCLaserTrack*)arrLaserTracks->At(itrack);
+    if ( !ltr ){
 //         AliWarning(Form("No informatino found for Track %d!",itrack));
-           continue;
-       }
-       ltr->UpdatePoints();
-        fgArrLaserTracks->AddAt(new AliTPCLaserTrack(*ltr),itrack);
+      continue;
     }
-    delete f;
+    ltr->UpdatePoints();
+    fgArrLaserTracks->AddAt(new AliTPCLaserTrack(*ltr),itrack);
+  }
+
+  delete arrLaserTracks;
 }
 
 
@@ -180,7 +221,7 @@ void AliTPCLaserTrack::UpdatePoints(){
   //
   // update track points
   //
-  const Double_t kMaxSnp=0.99;
+  const Double_t kMaxSnp=0.97;
   AliTPCROC* roc = AliTPCROC::Instance();
   //
   //
@@ -197,7 +238,7 @@ void AliTPCLaserTrack::UpdatePoints(){
 
   }
   for (Int_t irow=158; irow>=0; irow--){
-    (*fVecSec)[irow]= 0;       //                - 
+    (*fVecSec)[irow]= -1;       //                -
     (*fVecP2)[irow] = 0;       //                - P2  -snp
     (*fVecPhi)[irow]= 0;       //                - global phi
     (*fVecGX)[irow] = 0;       // points vectors - globalX
@@ -271,7 +312,6 @@ Int_t AliTPCLaserTrack::IdentifyTrack(AliExternalTrackParam *track, Int_t side)
   //
   Float_t mindist=10; // maxima minimal distance
   Int_t id = -1;
-  AliExternalTrackParam*  ltr0= (AliExternalTrackParam*)arrTracks->UncheckedAt(0);
   for (Int_t itrack=0; itrack<fgkNLaserTracks; itrack++){    
     AliTPCLaserTrack *ltr = (AliTPCLaserTrack*)arrTracks->UncheckedAt(itrack);
     if (side>=0) if (ltr->GetSide()!=side) continue;
@@ -300,13 +340,11 @@ Int_t AliTPCLaserTrack::IdentifyTrack(AliExternalTrackParam *track, Int_t side)
     if (id<0)  {
       id =itrack; 
       mindist=dist; 
-      ltr0=ltr;
       continue;
     }
     if (dist>mindist) continue;
     id = itrack;
     mindist=dist;
-    ltr0=ltr;
   }
   return id;
 }