New functions MakeTrackSegmentsCPV(), FillOneModule()
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 25 Oct 2000 08:49:20 +0000 (08:49 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 25 Oct 2000 08:49:20 +0000 (08:49 +0000)
PHOS/AliPHOSTrackSegmentMakerv1.cxx
PHOS/AliPHOSTrackSegmentMakerv1.h

index d0c03f2..1bf4acd 100644 (file)
@@ -155,7 +155,7 @@ void  AliPHOSTrackSegmentMakerv1::FillOneModule(AliPHOSRecPoint::RecPointsList *
                                                Int_t & emcStopedAt, 
                                                Int_t & ppsdStopedAt)
 {
-  // Fill xxxOut arrays with clusters from one PHOS module
+  // Fill xxxOut arrays with clusters from one PHOS module EMC+PPSD
  
   AliPHOSEmcRecPoint *  emcRecPoint  ; 
   AliPHOSPpsdRecPoint * ppsdRecPoint ;
@@ -197,6 +197,48 @@ void  AliPHOSTrackSegmentMakerv1::FillOneModule(AliPHOSRecPoint::RecPointsList *
    
 }
 //____________________________________________________________________________
+void  AliPHOSTrackSegmentMakerv1::FillOneModule(AliPHOSRecPoint::RecPointsList * emcIn, 
+                                               TArrayI * emcOut, 
+                                               AliPHOSRecPoint::RecPointsList * cpvIn, 
+                                               TArrayI * cpvOut,
+                                               Int_t & phosmod, 
+                                               Int_t & emcStopedAt, 
+                                               Int_t & cpvStopedAt)
+{
+  // Fill xxxOut arrays with clusters from one PHOS module EMC+CPV
+  AliPHOSEmcRecPoint * emcRecPoint  ; 
+  AliPHOSEmcRecPoint * cpvRecPoint ;
+  Int_t index ;
+  
+  Int_t nEmcUnfolded = emcIn->GetEntries() ;
+  emcOut->Set(nEmcUnfolded);
+  Int_t inEmcOut = 0 ;
+  for(index = emcStopedAt; index < nEmcUnfolded; index++){
+    emcRecPoint = (AliPHOSEmcRecPoint *) emcIn->At(index) ;
+    if(emcRecPoint->GetPHOSMod() != phosmod )  
+      break ;
+    
+    emcOut->AddAt(emcRecPoint->GetIndexInList(),inEmcOut) ;
+    inEmcOut++ ; 
+  }
+  emcOut->Set(inEmcOut) ;
+  emcStopedAt = index ;
+
+  cpvOut->Set(cpvIn->GetEntries()) ;
+  Int_t inCpvOut = 0;
+  for(index = cpvStopedAt; index < cpvIn->GetEntries(); index++){
+    cpvRecPoint = (AliPHOSEmcRecPoint *) cpvIn->At(index) ;
+    if(cpvRecPoint->GetPHOSMod() != phosmod )   
+      break ;
+    else  
+      cpvOut->AddAt(index,inCpvOut++) ;
+  }
+  cpvOut->Set(inCpvOut);
+  cpvStopedAt = index ;
+   
+}
+//____________________________________________________________________________
 Float_t  AliPHOSTrackSegmentMakerv1::GetDistanceInPHOSPlane(AliPHOSEmcRecPoint * emcclu,AliPHOSPpsdRecPoint * PpsdClu, Bool_t &toofar)
 {
   // Calculates the distance between the EMC RecPoint and the PPSD RecPoint
@@ -390,7 +432,7 @@ void  AliPHOSTrackSegmentMakerv1::MakeTrackSegments(DigitsList * dl,
 
 
   if(fUnfoldFlag){
-    UnfoldAll(dl, emcl) ; // Unfolds all EMC clusters
+    UnfoldAll(dl, emcl) ;      // Unfolds all EMC clusters
   }
 
 
@@ -432,6 +474,38 @@ void  AliPHOSTrackSegmentMakerv1::MakeTrackSegments(DigitsList * dl,
 }
 
 //____________________________________________________________________________
+void  AliPHOSTrackSegmentMakerv1::MakeTrackSegmentsCPV(DigitsList * dl, 
+                                                      AliPHOSRecPoint::RecPointsList * emcl, 
+                                                      AliPHOSRecPoint::RecPointsList * cpvl)
+{
+  // Unfold clusters in EMC and CPV and refill reconstructed point lists emcl and ppsdl
+  // Yuri Kharlov. 19 October 2000
+  
+  fNTrackSegments = 0 ; 
+
+  TArrayI * emcRecPoints     = new TArrayI(1000) ;  // these arrays keep indexes 
+  TArrayI * cpvRecPoints     = new TArrayI(1000) ;  // of RecPoints, which are kept in emcl and ppsdl
+  
+  if(fUnfoldFlag){
+    UnfoldAll(dl, emcl) ;   // Unfolds all EMC clusters
+    UnfoldAll(dl, cpvl) ;   // Unfolds all CPV clusters
+  }
+
+//    Int_t phosmod      = 1 ;
+//    Int_t emcStopedAt  = 0 ; 
+//    Int_t cpvStopedAt  = 0 ; 
+//    while(phosmod <= fGeom->GetNModules() ){
+//      FillOneModule(emcl, emcRecPoints, ppsdl, cpvRecPoints, phosmod, emcStopedAt, cpvStopedAt) ;
+//      emcRecPoints->Reset() ;
+//      cpvRecPoints->Reset() ;
+//      phosmod++ ; 
+//    }
+
+  delete emcRecPoints ; emcRecPoints = 0 ; 
+  delete cpvRecPoints ; cpvRecPoints = 0 ; 
+}
+
+//____________________________________________________________________________
 Double_t  AliPHOSTrackSegmentMakerv1::ShowerShape(Double_t r)
 { 
   // Shape of the shower (see PHOS TDR)
@@ -454,15 +528,14 @@ void  AliPHOSTrackSegmentMakerv1::UnfoldAll(DigitsList * dl, AliPHOSRecPoint::Re
   
   for(index = 0 ; index < nEmcUnfolded; index++){
 
-    emcRecPoint = (AliPHOSEmcRecPoint *) emcIn->At(index) ;
+    emcRecPoint   = (AliPHOSEmcRecPoint *) emcIn->At(index) ;
     
-    Int_t nMultipl = emcRecPoint->GetMultiplicity() ; 
-    Int_t * maxAt = new Int_t[nMultipl] ;
+    Int_t nMultipl        = emcRecPoint->GetMultiplicity() ; 
+    Int_t   * maxAt       = new Int_t[nMultipl] ;
     Float_t * maxAtEnergy = new Float_t[nMultipl] ;
     Int_t nMax = emcRecPoint->GetNumberOfLocalMax(maxAt, maxAtEnergy) ;
     
     if( nMax > 1 ) {     // if cluster is very flat (no pronounced maximum) then nMax = 0 
-      
       UnfoldClusters(dl, emcIn, emcRecPoint, nMax, maxAt, maxAtEnergy) ;
       emcIn->Remove(emcRecPoint); 
       emcIn->Compress() ;
@@ -478,9 +551,7 @@ void  AliPHOSTrackSegmentMakerv1::UnfoldAll(DigitsList * dl, AliPHOSRecPoint::Re
 
   // to set index to new and correct index of old RecPoints
   for( index = 0 ; index < emcIn->GetEntries() ; index++){
-    
     ((AliPHOSEmcRecPoint *) emcIn->At(index))->SetIndexInList(index) ;   
-    
   }
 
   emcIn->Sort() ;
index fdfd5a5..fe37af8 100644 (file)
@@ -47,7 +47,14 @@ public:
                        TArrayI * ppsdOutLow, 
                        Int_t &PHOSModule, 
                        Int_t & emcStopedAt, 
-                       Int_t & ppsdStopedAt) ; // Fills temporary arrais with clusters from one module  
+                       Int_t & ppsdStopedAt) ; // Fills temporary arrais with clusters from one module EMC+PPSD
+  void    FillOneModule(AliPHOSRecPoint::RecPointsList * emcIn, 
+                       TArrayI * emcOut, 
+                       AliPHOSRecPoint::RecPointsList * cpvIn, 
+                       TArrayI * cpvOut, 
+                       Int_t & PHOSModule, 
+                       Int_t & emcStopedAt, 
+                       Int_t & cpvStopedAt) ;  // Fills temporary arrais with clusters from one module EMC+CPV
   Float_t GetDistanceInPHOSPlane(AliPHOSEmcRecPoint * EmcClu , AliPHOSPpsdRecPoint * Ppsd , Bool_t & TooFar ) ; // see R0
 
   void    MakeLinks(TArrayI * EmcRecPoints, TArrayI * PpsdRecPointsUp, TArrayI * PpsdRecPointsLow, 
@@ -62,11 +69,14 @@ public:
                            AliPHOSRecPoint::RecPointsList * emcl, 
                            AliPHOSRecPoint::RecPointsList * ppsdl, 
                            AliPHOSTrackSegment::TrackSegmentsList * trsl ) ; // does the job
+  void    MakeTrackSegmentsCPV(DigitsList * DL, 
+                           AliPHOSRecPoint::RecPointsList * emcl, 
+                           AliPHOSRecPoint::RecPointsList * ppsdl ) ; // just unfold EMC and CPV clusters
   virtual void SetMaxEmcPpsdDistance(Float_t r){ fR0 = r ;}
   virtual void    SetUnfoldFlag() { fUnfoldFlag = kTRUE ; } ; 
   static Double_t ShowerShape(Double_t r) ; // Shape of shower used in unfolding; class member function (not object member function)
   void    UnfoldAll(DigitsList * Dl, AliPHOSRecPoint::RecPointsList * emcIn) ; 
-                                             // Unfolds and sorts all EMC clusters
+                                            // Unfolds and sorts all EMC clusters
   void  UnfoldClusters(DigitsList * DL, 
                       AliPHOSRecPoint::RecPointsList * emcIn, 
                       AliPHOSEmcRecPoint * iniEmc,