]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TOF/AliTOFtrackerV1.cxx
Moving classes from graphics to rec
[u/mrichter/AliRoot.git] / TOF / AliTOFtrackerV1.cxx
index 42f9f287882251a28ce3146f6bea62830fd110fc..691275dfa5d26b03adf5a2615a7125db44623e08 100644 (file)
 #include <TFile.h>
 #include <TH1F.h>
 #include <TH2F.h>
+#include <TSeqCollection.h>
 
-#include "AliAlignObj.h"
 #include "AliESDtrack.h"
 #include "AliESDEvent.h"
 #include "AliLog.h"
 #include "AliTrackPointArray.h"
+#include "AliGeomManager.h"
+#include "AliCDBManager.h"
 
 #include "AliTOFcalib.h"
 #include "AliTOFRecoParam.h"
@@ -47,6 +49,7 @@
 #include "AliTOFGeometry.h"
 #include "AliTOFtrackerV1.h"
 #include "AliTOFtrack.h"
+#include "AliTOFpidESD.h"
 
 extern TROOT *gROOT;
 
@@ -63,8 +66,8 @@ AliTOFtrackerV1::AliTOFtrackerV1():
   fnbadmatch(0),
   fnunmatch(0),
   fnmatch(0),
-  fTracks(0x0),
-  fSeeds(0x0),
+  fTracks(new TClonesArray("AliTOFtrack")),
+  fSeeds(new TClonesArray("AliESDtrack")),
   fHDigClusMap(0x0),
   fHDigNClus(0x0),
   fHDigClusTime(0x0),
@@ -103,8 +106,8 @@ AliTOFtrackerV1::AliTOFtrackerV1(const AliTOFtrackerV1 &t):
   fnbadmatch(0),
   fnunmatch(0),
   fnmatch(0),
-  fTracks(0x0),
-  fSeeds(0x0),
+  fTracks(new TClonesArray("AliTOFtrack")),
+  fSeeds(new TClonesArray("AliESDtrack")),
   fHDigClusMap(0x0),
   fHDigNClus(0x0),
   fHDigClusTime(0x0),
@@ -175,6 +178,16 @@ AliTOFtrackerV1::~AliTOFtrackerV1() {
   delete fHRecSigZVsP;
   delete fHRecSigYVsPWin;
   delete fHRecSigZVsPWin;
+  if (fTracks){
+    fTracks->Delete();
+    delete fTracks;
+    fTracks=0x0;
+  }
+  if (fSeeds){
+    fSeeds->Delete();
+    delete fSeeds;
+    fSeeds=0x0;
+  }
 }
 //_____________________________________________________________________________
 Int_t AliTOFtrackerV1::PropagateBack(AliESDEvent* event) {
@@ -194,7 +207,6 @@ Int_t AliTOFtrackerV1::PropagateBack(AliESDEvent* event) {
 
   Int_t ntrk=event->GetNumberOfTracks();
   fNseeds = ntrk;
-  fSeeds= new TClonesArray("AliESDtrack",ntrk);
   TClonesArray &aESDTrack = *fSeeds;
 
 
@@ -259,16 +271,8 @@ Int_t AliTOFtrackerV1::PropagateBack(AliESDEvent* event) {
   //Make TOF PID
   fPid->MakePID(event,timeZero);
 
-  if (fSeeds) {
-    fSeeds->Delete();
-    delete fSeeds;
-    fSeeds = 0x0;
-  }
-  if (fTracks) {
-    fTracks->Delete();
-    delete fTracks;
-    fTracks = 0x0;
-  }
+  fSeeds->Clear();
+  fTracks->Clear();
   return 0;
   
 }
@@ -279,14 +283,13 @@ void AliTOFtrackerV1::CollectESD() {
   Int_t seedsTOF1=0;
   Int_t seedsTOF2=0;
  
-  fTracks= new TClonesArray("AliTOFtrack");
   TClonesArray &aTOFTrack = *fTracks;
   for (Int_t i=0; i<fNseeds; i++) {
 
     AliESDtrack *t =(AliESDtrack*)fSeeds->UncheckedAt(i);
     if ((t->GetStatus()&AliESDtrack::kTPCout)==0)continue;
 
-    // TRD 'good' tracks, already propagated at 371 cm
+    // TRD 'good' tracks, already propagated at 372 cm
 
     AliTOFtrack *track = new AliTOFtrack(*t); // New
     Double_t x = track->GetX(); //New
@@ -385,7 +388,10 @@ void AliTOFtrackerV1::MatchTracks( ){
       if(nc>kncmax)break;
       if(c->GetZ() > z+dz) break;
       if(c->IsUsed()) continue;      
-      if(!c->GetStatus()) continue; // skip bad channels as declared in OCDB  
+      if(!c->GetStatus()) {
+             AliDebug(1,"Cluster in channel declared bad!");
+             continue; // skip bad channels as declared in OCDB  
+      }
       Float_t xyz[3]; c->GetGlobalXYZ(xyz);
       Double_t clPhi=TMath::ATan2(xyz[1],xyz[0]);
       Double_t dph=TMath::Abs(clPhi-phi);
@@ -396,7 +402,7 @@ void AliTOFtrackerV1::MatchTracks( ){
       nc++;  
     }
 
-    //start propagation: go to the average TOF pad middle plane at ~378.5 cm
+    //start propagation: go to the average TOF pad middle plane at ~379.5 cm
 
     Float_t  xTOF = sensRadius;
     Double_t ymax = xTOF*TMath::Tan(0.5*AliTOFGeometry::GetAlpha());
@@ -532,13 +538,17 @@ Int_t AliTOFtrackerV1::LoadClusters(TTree *cTree) {
     return 1;
   }
 
-  TClonesArray dummy("AliTOFcluster",10000), *clusters=&dummy;
+  static TClonesArray dummy("AliTOFcluster",10000);
+  dummy.Clear();
+  TClonesArray *clusters=&dummy;
   branch->SetAddress(&clusters);
 
   cTree->GetEvent(0);
   Int_t nc=clusters->GetEntriesFast();
   fHDigNClus->Fill(nc);
 
+  AliInfo(Form("Number of clusters: %d",nc));
+
   for (Int_t i=0; i<nc; i++) {
     AliTOFcluster *c=(AliTOFcluster*)clusters->UncheckedAt(i);
     fClusters[i]=new AliTOFcluster(*c); fN++;
@@ -790,3 +800,17 @@ Float_t AliTOFtrackerV1::GetTimeZerofromTOF(AliESDEvent * /*event*/) const {
   }
   return 0.;
 }
+//_________________________________________________________________________
+
+void AliTOFtrackerV1::FillClusterArray(TObjArray* arr) const
+{
+  //
+  // Returns the TOF cluster array
+  //
+
+  if (fN==0)
+    arr = 0x0;
+  else
+    for (Int_t i=0; i<fN; ++i) arr->Add(fClusters[i]);
+
+}