]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSTrackSegmentMakerv1.cxx
Addes script to compare Naiive, Poisson to Hits, Primaries
[u/mrichter/AliRoot.git] / PHOS / AliPHOSTrackSegmentMakerv1.cxx
index 339cbce62e765786319da4928df3c7a5bffc1e2c..dae9b9a2f99159d5a80e71f31ccb6d9d94a0da72 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 /* $Id$ */
+
+/* History of cvs commits:
+ *
+ * $Log$
+ * Revision 1.73  2005/05/28 14:19:05  schutz
+ * Compilation warnings fixed by T.P.
+ *
+ */
+
 //_________________________________________________________________________
 // Implementation version 1 of algorithm class to construct PHOS track segments
 // Track segment for PHOS is list of 
@@ -130,10 +139,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,18 +165,22 @@ Float_t  AliPHOSTrackSegmentMakerv1::GetDistanceInPHOSPlane(AliPHOSEmcRecPoint *
       Int_t iClosestTrack = -1;
       Double_t minDistance = 1e6;
       Double_t pxyz[3], xyz[3];
+      Double_t rPHOS = 
+       AliPHOSGetter::Instance()->PHOSGeometry()->GetIPtoCrystalSurface();
       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, fESD->GetMagneticField(), 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, fESD->GetMagneticField(), 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());
+       //      Info("GetDistanceInPHOSPlane","Track %d propagation to CPV = (%f,%f,%f)",
+       //     iTrack,vecDist.X(),vecDist.Y(),vecDist.Z());
        vecDist -= vecCpv;
        distance2Track = TMath::Sqrt(vecDist.X()*vecDist.X() + vecDist.Z()*vecDist.Z());
        // Find the closest track to the EMC recpoint
@@ -179,7 +192,7 @@ Float_t  AliPHOSTrackSegmentMakerv1::GetDistanceInPHOSPlane(AliPHOSEmcRecPoint *
 
       if (iClosestTrack != -1) {
        track = fESD->GetTrack(iClosestTrack);
-       track->GetOuterPxPyPz(pxyz); // track momentum ibid.
+       if (track->GetPxPyPzAt(rPHOS, fESD->GetMagneticField(), pxyz)) { // track momentum ibid.
        TVector3 vecCpvGlobal; // Global position of the CPV recpoint
        AliPHOSGetter * gime = AliPHOSGetter::Instance() ; 
        const AliPHOSGeometry * geom = gime->PHOSGeometry() ; 
@@ -191,12 +204,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 ;
     }
@@ -209,7 +224,7 @@ Float_t  AliPHOSTrackSegmentMakerv1::GetDistanceInPHOSPlane(AliPHOSEmcRecPoint *
 
 //____________________________________________________________________________
 TVector3  AliPHOSTrackSegmentMakerv1::PropagateToPlane(Double_t *x, Double_t *p,
-                                                      char *det, Int_t moduleNumber) const
+                                                      const char *det, Int_t moduleNumber) const
 {
   // Propagate a straight-line track from the origin point x
   // along the direction p to the CPV or EMC module moduleNumber
@@ -235,7 +250,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 +264,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) ;
 }
@@ -347,7 +366,6 @@ void  AliPHOSTrackSegmentMakerv1::MakePairs()
         
        (dynamic_cast<AliPHOSTrackSegment *>(trackSegments->At(fNTrackSegments)))->SetIndexInList(fNTrackSegments);
        fNTrackSegments++ ;
-       
        emcExist[linkUp->GetEmc()-fEmcFirst] = -1 ; //Mark emc  that Cpv was found 
        //mark CPV recpoint as already used 
        cpvExist[linkUp->GetCpv()-fCpvFirst] = kFALSE ;
@@ -388,18 +406,20 @@ void  AliPHOSTrackSegmentMakerv1::Exec(Option_t *option)
     return ; 
   }
   
-  AliPHOSGetter * gime = AliPHOSGetter::Instance(GetTitle()) ;  
+  AliPHOSGetter * gime = AliPHOSGetter::Instance() ;  
  
   const AliPHOSGeometry * geom = gime->PHOSGeometry() ; 
 
-  if (fLastEvent == -1) fLastEvent = gime->MaxEvent() - 1 ;
-  else fLastEvent = TMath::Min(fFirstEvent,gime->MaxEvent());
+  if (fLastEvent == -1) 
+    fLastEvent = gime->MaxEvent() - 1 ;
+  else 
+    fLastEvent = TMath::Min(fFirstEvent,gime->MaxEvent());
   Int_t nEvents   = fLastEvent - fFirstEvent + 1;
 
   Int_t ievent ; 
   for (ievent = fFirstEvent; ievent <= fLastEvent; ievent++) {
     gime->Event(ievent,"R") ;
-    //Make some initializations 
+   //Make some initializations 
     fNTrackSegments = 0 ;
     fEmcFirst = 0 ;    
     fEmcLast  = 0 ;   
@@ -423,7 +443,6 @@ void  AliPHOSTrackSegmentMakerv1::Exec(Option_t *option)
     
     //increment the total number of track segments per run 
     fTrackSegmentsInRun += gime->TrackSegments()->GetEntriesFast() ; 
-
   }
   
   if(strstr(option,"tim")){
@@ -432,7 +451,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();
 }
 
 //____________________________________________________________________________
@@ -445,7 +465,7 @@ void AliPHOSTrackSegmentMakerv1::Unload()
 }
 
 //____________________________________________________________________________
-void AliPHOSTrackSegmentMakerv1::Print()const
+void AliPHOSTrackSegmentMakerv1::Print(const Option_t *)const
 {
   //  Print TrackSegmentMaker parameters
 
@@ -478,15 +498,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");
+  }
 }