]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSTrackSegmentMakerv1.cxx
Extracting PHOS and EMCAL trackers from the correspondig reconstructors (Yu.Belikov)
[u/mrichter/AliRoot.git] / PHOS / AliPHOSTrackSegmentMakerv1.cxx
index dd17d23add91aa01e5778532ae88c2662a5968f5..c382bb5dcc27ac28c067c45b63db5748cdf605ac 100644 (file)
@@ -130,10 +130,10 @@ Float_t  AliPHOSTrackSegmentMakerv1::GetDistanceInPHOSPlane(AliPHOSEmcRecPoint *
   // Calculates the distance between the EMC RecPoint and the CPV RecPoint
   // Clusters are sorted in "rows" and "columns" of width 1 cm
 
-  Float_t delta = 1 ;  // Width of the rows in sorting of RecPoints (in cm)
+  //Float_t delta = 1 ;  // Width of the rows in sorting of RecPoints (in cm)
                        // if you change this value, change it as well in xxxRecPoint::Compare()
   Float_t distance2Cpv   = fRcpv ;
-  Float_t distance2Track = fRcpv ; 
+  Float_t distance2Track = fRtpc ; 
 
   trackindex = -1 ; // closest track within fRCpv 
 
@@ -156,15 +156,18 @@ Float_t  AliPHOSTrackSegmentMakerv1::GetDistanceInPHOSPlane(AliPHOSEmcRecPoint *
       Int_t iClosestTrack = -1;
       Double_t minDistance = 1e6;
       Double_t pxyz[3], xyz[3];
+      Double_t rPHOS=460.;
       AliESDtrack *track;
       for (Int_t iTrack=0; iTrack<nTracks; iTrack++) {
        track = fESD->GetTrack(iTrack);
        if (track->IsPHOS()) 
          continue ; 
-       track->GetOuterXYZ(xyz);     // track coord on the cylinder of PHOS radius
+       if (!track->GetXYZAt(rPHOS,xyz))
+           continue; //track coord on the cylinder of PHOS radius
        if ((TMath::Abs(xyz[0])+TMath::Abs(xyz[1])+TMath::Abs(xyz[2]))<=0)
-         continue;
-       track->GetOuterPxPyPz(pxyz); // track momentum ibid.
+          continue;
+       if (!track->GetPxPyPzAt(rPHOS,pxyz))
+           continue; // track momentum ibid.
        vecDist = PropagateToPlane(xyz,pxyz,"CPV",cpvClu->GetPHOSMod());
        //      Info("GetDistanceInPHOSPlane","Track %d propagation to CPV = (%f,%f,%f)",
        //     iTrack,vecDist.X(),vecDist.Y(),vecDist.Z());
@@ -179,7 +182,7 @@ Float_t  AliPHOSTrackSegmentMakerv1::GetDistanceInPHOSPlane(AliPHOSEmcRecPoint *
 
       if (iClosestTrack != -1) {
        track = fESD->GetTrack(iClosestTrack);
-       track->GetOuterPxPyPz(pxyz); // track momentum ibid.
+       if (track->GetPxPyPzAt(rPHOS,pxyz)) { // track momentum ibid.
        TVector3 vecCpvGlobal; // Global position of the CPV recpoint
        AliPHOSGetter * gime = AliPHOSGetter::Instance() ; 
        const AliPHOSGeometry * geom = gime->PHOSGeometry() ; 
@@ -191,12 +194,14 @@ Float_t  AliPHOSTrackSegmentMakerv1::GetDistanceInPHOSPlane(AliPHOSEmcRecPoint *
 //          iClosestTrack,vecDist.X(),vecDist.Y(),vecDist.Z());
        vecDist -= vecEmc;
        distance2Track = TMath::Sqrt(vecDist.X()*vecDist.X() + vecDist.Z()*vecDist.Z());
+       }
       }
 //     } else {
 //       // If no ESD exists, than simply find EMC-CPV distance
 //       distance = (vecCpv - vecEmc).Mag() ;
     
-      if(distance2Track < fRcpv + 2*delta )
+      //if(distance2Track < fRcpv + 2*delta )
+      if(distance2Track < fRtpc )
        trackindex = iClosestTrack ; 
       //      toofar = kFALSE ;
     }
@@ -235,7 +240,9 @@ void  AliPHOSTrackSegmentMakerv1::Init()
 {
   // Make all memory allocations that are not possible in default constructor
   
-  AliPHOSGetter* gime = AliPHOSGetter::Instance(GetTitle(), fEventFolderName.Data());
+  AliPHOSGetter* gime = AliPHOSGetter::Instance();
+  if(!gime)
+    gime = AliPHOSGetter::Instance(GetTitle(), fEventFolderName.Data());
   
   fLinkUpArray  = new TClonesArray("AliPHOSLink", 1000); 
   if ( !gime->TrackSegmentMaker() ) {
@@ -247,12 +254,14 @@ void  AliPHOSTrackSegmentMakerv1::Init()
 void  AliPHOSTrackSegmentMakerv1::InitParameters()
 {
   //Initializes parameters
-  fRcpv      = 10. ;   
+  fRcpv      = 10. ;
+  fRtpc      = 4. ;
   fEmcFirst  = 0 ;    
   fEmcLast   = 0 ;   
   fCpvFirst  = 0 ;   
   fCpvLast   = 0 ;   
   fLinkUpArray = 0 ;
+  fWrite                   = kTRUE ;
   fTrackSegmentsInRun       = 0 ; 
   SetEventRange(0,-1) ;
 }
@@ -387,7 +396,7 @@ void  AliPHOSTrackSegmentMakerv1::Exec(Option_t *option)
     return ; 
   }
   
-  AliPHOSGetter * gime = AliPHOSGetter::Instance(GetTitle()) ;  
+  AliPHOSGetter * gime = AliPHOSGetter::Instance() ;  
  
   const AliPHOSGeometry * geom = gime->PHOSGeometry() ; 
 
@@ -432,7 +441,8 @@ void  AliPHOSTrackSegmentMakerv1::Exec(Option_t *option)
           gBenchmark->GetCpuTime("PHOSTSMaker"), 
           gBenchmark->GetCpuTime("PHOSTSMaker")/nEvents) ;
    }
-  Unload();
+  if(fWrite) //do not unload in "on flight" mode
+    Unload();
 }
 
 //____________________________________________________________________________
@@ -478,15 +488,17 @@ void AliPHOSTrackSegmentMakerv1::WriteTrackSegments()
   TClonesArray * trackSegments = gime->TrackSegments() ; 
   trackSegments->Expand(trackSegments->GetEntriesFast()) ;
 
-  TTree * treeT = gime->TreeT();
-  //First TS
-  Int_t bufferSize = 32000 ; 
-  TBranch * tsBranch = treeT->Branch("PHOSTS",&trackSegments,bufferSize);
-  tsBranch->Fill() ;  
-
-  gime->WriteTracks("OVERWRITE");
-  gime->WriteTrackSegmentMaker("OVERWRITE");
+  if(fWrite){ //We write TreeT
+    TTree * treeT = gime->TreeT();
+    
+    //First TS
+    Int_t bufferSize = 32000 ; 
+    TBranch * tsBranch = treeT->Branch("PHOSTS",&trackSegments,bufferSize);
+    tsBranch->Fill() ;  
+    
+    gime->WriteTracks("OVERWRITE");
+    gime->WriteTrackSegmentMaker("OVERWRITE");
+  }
 }