* 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>
#include <TSystem.h>
#include "AliLog.h"
+#include "AliCDBManager.h"
+#include "AliCDBEntry.h"
+#include "AliCDBPath.h"
#include "AliTPCLaserTrack.h"
#include "AliTPCROC.h"
fVecLZ(0) // points vectors - localZ
{
//
- // Default constructor
+// // Default constructor
//
}
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;
}
//
// update track points
//
- const Double_t kMaxSnp=0.99;
+ const Double_t kMaxSnp=0.97;
AliTPCROC* roc = AliTPCROC::Instance();
//
//
}
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
//
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;
if (id<0) {
id =itrack;
mindist=dist;
- ltr0=ltr;
continue;
}
if (dist>mindist) continue;
id = itrack;
mindist=dist;
- ltr0=ltr;
}
return id;
}