isolated cell serach included in AliPMDClusteringV1 and kept in recpoints for offline...
authorbasanta <basanta@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 26 May 2009 08:48:49 +0000 (08:48 +0000)
committerbasanta <basanta@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 26 May 2009 08:48:49 +0000 (08:48 +0000)
25 files changed:
PMD/AliPMDClusterFinder.cxx
PMD/AliPMDClusterFinder.h
PMD/AliPMDClustering.h
PMD/AliPMDClusteringV1.cxx
PMD/AliPMDClusteringV1.h
PMD/AliPMDClusteringV2.cxx
PMD/AliPMDClusteringV2.h
PMD/AliPMDDigitizer.cxx
PMD/AliPMDDigitizer.h
PMD/AliPMDRawToSDigits.cxx
PMD/AliPMDRawToSDigits.h
PMD/AliPMDcluster.cxx
PMD/AliPMDcluster.h
PMD/AliPMDdigit.cxx
PMD/AliPMDdigit.h
PMD/AliPMDisocell.cxx [new file with mode: 0644]
PMD/AliPMDisocell.h [new file with mode: 0644]
PMD/AliPMDrechit.cxx
PMD/AliPMDrechit.h
PMD/AliPMDsdigit.cxx
PMD/AliPMDsdigit.h
PMD/AliPMDtracker.cxx
PMD/CMake_libPMDrec.txt
PMD/PMDrecLinkDef.h
PMD/libPMDrec.pkg

index 0185c3b..5a92759 100644 (file)
@@ -39,6 +39,7 @@
 #include "AliPMDcluster.h"
 #include "AliPMDrecpoint1.h"
 #include "AliPMDrechit.h"
+#include "AliPMDisocell.h"
 #include "AliPMDRawStream.h"
 #include "AliPMDCalibData.h"
 #include "AliPMDPedestal.h"
@@ -151,7 +152,11 @@ void AliPMDClusterFinder::Digits2RecPoints(Int_t ievt)
   Int_t    idet;
   Float_t  clusdata[6];
 
+  AliPMDisocell *pmdiso = 0x0;
+
   TObjArray *pmdcont = new TObjArray();
+  TObjArray *pmdisocell = new TObjArray();
+
   AliPMDClustering *pmdclust = new AliPMDClusteringV1();
 
   pmdclust->SetEdepCut(fEcut);
@@ -211,13 +216,17 @@ void AliPMDClusterFinder::Digits2RecPoints(Int_t ievt)
          adc = adc*gain;
 
          //Int_t trno   = pmddigit->GetTrackNumber();
-         fCellADC[xpos][ypos] = (Double_t) adc;
+         fCellTrack[xpos][ypos] = pmddigit->GetTrackNumber();
+         fCellPid[xpos][ypos]   = pmddigit->GetTrackPid();
+         fCellADC[xpos][ypos]   = (Double_t) adc;
        }
 
       idet = det;
       ismn = smn;
-      pmdclust->DoClust(idet,ismn,fCellADC,pmdcont);
-      
+      //pmdclust->DoClust(idet,ismn,fCellADC,pmdisocell,pmdcont);
+      pmdclust->DoClust(idet,ismn,fCellTrack,fCellPid,fCellADC,
+                       pmdisocell,pmdcont);
+
       Int_t nentries1 = pmdcont->GetEntries();
 
       AliDebug(1,Form("Total number of clusters/module = %d",nentries1));
@@ -241,12 +250,35 @@ void AliPMDClusterFinder::Digits2RecPoints(Int_t ievt)
            {
              Int_t celldataX = pmdcl->GetClusCellX(ihit);
              Int_t celldataY = pmdcl->GetClusCellY(ihit);
-             AddRecHit(celldataX, celldataY);
+             Int_t celldataTr = pmdcl->GetClusCellTrack(ihit);
+             Int_t celldataPid   = pmdcl->GetClusCellPid(ihit);
+             AddRecHit(celldataX, celldataY, celldataTr, celldataPid);
+             //AddRecHit(celldataX, celldataY);
            }
          branch2->Fill();
          ResetRechit();
        }
       pmdcont->Delete();
+
+         // Added single isolated cell for offline gain calibration
+         nentries1 = pmdisocell->GetEntries();
+         AliDebug(1,Form("Total number of isolated single cell clusters = %d",nentries1));
+         
+         for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
+           {
+             pmdiso = (AliPMDisocell*)pmdisocell->UncheckedAt(ient1);
+             idet = pmdiso->GetDetector();
+             ismn = pmdiso->GetSmn();
+             clusdata[0] = (Float_t) pmdiso->GetRow();
+             clusdata[1] = (Float_t) pmdiso->GetCol();
+             clusdata[2] = pmdiso->GetADC();
+             clusdata[3] = 1.;
+             clusdata[4] = -99.;
+             clusdata[5] = -99.;
+      
+             AddRecPoint(idet,ismn,clusdata);
+           }
+         pmdisocell->Delete();
       
       branch1->Fill();
       ResetRecpoint();
@@ -260,6 +292,7 @@ void AliPMDClusterFinder::Digits2RecPoints(Int_t ievt)
   //   delete the pointers
   delete pmdclust;
   delete pmdcont;
+  delete pmdisocell;
     
 }
 // ------------------------------------------------------------------------- //
@@ -280,8 +313,10 @@ void AliPMDClusterFinder::Digits2RecPoints(TTree *digitsTree,
   Float_t  clusdata[6];
 
   AliPMDcluster *pmdcl = 0x0;
+  AliPMDisocell *pmdiso = 0x0;
 
   TObjArray *pmdcont = new TObjArray();
+  TObjArray *pmdisocell = new TObjArray();
   AliPMDClustering *pmdclust = new AliPMDClusteringV1();
 
   pmdclust->SetEdepCut(fEcut);
@@ -337,6 +372,8 @@ void AliPMDClusterFinder::Digits2RecPoints(TTree *digitsTree,
          adc = adc1*gain;
 
          //Int_t trno   = pmddigit->GetTrackNumber();
+         fCellTrack[xpos][ypos] = pmddigit->GetTrackNumber();
+         fCellPid[xpos][ypos] = pmddigit->GetTrackPid();
          fCellADC[xpos][ypos] = (Double_t) adc;
 
          totADCMod += (Int_t) adc;
@@ -348,7 +385,8 @@ void AliPMDClusterFinder::Digits2RecPoints(TTree *digitsTree,
 
       if (totADCMod <= 0) continue;
 
-      pmdclust->DoClust(idet,ismn,fCellADC,pmdcont);
+      pmdclust->DoClust(idet,ismn,fCellTrack,fCellPid,fCellADC,
+                       pmdisocell,pmdcont);
       
       Int_t nentries1 = pmdcont->GetEntries();
 
@@ -356,7 +394,7 @@ void AliPMDClusterFinder::Digits2RecPoints(TTree *digitsTree,
 
       for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
        {
-           pmdcl = (AliPMDcluster*)pmdcont->UncheckedAt(ient1);
+         pmdcl = (AliPMDcluster*)pmdcont->UncheckedAt(ient1);
          idet        = pmdcl->GetDetector();
          ismn        = pmdcl->GetSMN();
          clusdata[0] = pmdcl->GetClusX();
@@ -373,24 +411,47 @@ void AliPMDClusterFinder::Digits2RecPoints(TTree *digitsTree,
            {
              Int_t celldataX = pmdcl->GetClusCellX(ihit);
              Int_t celldataY = pmdcl->GetClusCellY(ihit);
-             AddRecHit(celldataX, celldataY);
+             Int_t celldataTr = pmdcl->GetClusCellTrack(ihit);
+             Int_t celldataPid   = pmdcl->GetClusCellPid(ihit);
+             AddRecHit(celldataX, celldataY, celldataTr, celldataPid);
            }
          branch2->Fill();
          ResetRechit();
        }
       pmdcont->Delete();
+
+      // Added single isolated cell for offline gain calibration
+      nentries1 = pmdisocell->GetEntries();
+      AliDebug(1,Form("Total number of isolated single cell clusters = %d",nentries1));
+      
+      for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
+       {
+         pmdiso = (AliPMDisocell*)pmdisocell->UncheckedAt(ient1);
+         idet = pmdiso->GetDetector();
+         ismn = pmdiso->GetSmn();
+         clusdata[0] = (Float_t) pmdiso->GetRow();
+         clusdata[1] = (Float_t) pmdiso->GetCol();
+         clusdata[2] = pmdiso->GetADC();
+         clusdata[3] = 1.;
+         clusdata[4] = -99.;
+         clusdata[5] = -99.;
+         
+         AddRecPoint(idet,ismn,clusdata);
+       }
+      pmdisocell->Delete();
       
       branch1->Fill();
       ResetRecpoint();
 
     } // modules
 
+
   ResetCellADC();
 
   //   delete the pointers
   delete pmdclust;
   delete pmdcont;
-    
+  delete pmdisocell;
 }
 // ------------------------------------------------------------------------- //
 
@@ -403,14 +464,16 @@ void AliPMDClusterFinder::Digits2RecPoints(AliRawReader *rawReader,
   // This method is called at the time of reconstruction from RAW data
 
 
-    AliPMDddldata *pmdddl = 0x0;
-    AliPMDcluster *pmdcl  = 0x0;
+  AliPMDddldata *pmdddl = 0x0;
+  AliPMDcluster *pmdcl  = 0x0;
+  AliPMDisocell *pmdiso = 0x0;
 
 
   Float_t  clusdata[6];
   TObjArray pmdddlcont;
 
   TObjArray *pmdcont = new TObjArray();
+  TObjArray *pmdisocell = new TObjArray();
 
   AliPMDClustering *pmdclust = new AliPMDClusteringV1();
 
@@ -465,7 +528,7 @@ void AliPMDClusterFinder::Digits2RecPoints(AliRawReader *rawReader,
       Int_t ientries = pmdddlcont.GetEntries();
       for (Int_t ient = 0; ient < ientries; ient++)
        {
-           pmdddl = (AliPMDddldata*)pmdddlcont.UncheckedAt(ient);
+         pmdddl = (AliPMDddldata*)pmdddlcont.UncheckedAt(ient);
          
          Int_t det = pmdddl->GetDetector();
          Int_t smn = pmdddl->GetSMN();
@@ -554,6 +617,9 @@ void AliPMDClusterFinder::Digits2RecPoints(AliRawReader *rawReader,
            {
              for (Int_t icol = 0; icol < kCol; icol++)
                {
+                 fCellTrack[irow][icol] = -1;
+                 fCellPid[irow][icol]   = -1;
+
                  fCellADC[irow][icol] = 
                    (Double_t) precpvADC[indexsmn][irow][icol];
                  totAdcMod += precpvADC[indexsmn][irow][icol];
@@ -591,14 +657,19 @@ void AliPMDClusterFinder::Digits2RecPoints(AliRawReader *rawReader,
            }
 
          if (totAdcMod <= 0) continue;
-         pmdclust->DoClust(idet,ismn,fCellADC,pmdcont);
+
+
+         //pmdclust->DoClust(idet,ismn,fCellADC,pmdisocell,pmdcont);
+         pmdclust->DoClust(idet,ismn,fCellTrack,fCellPid,fCellADC,
+                           pmdisocell,pmdcont);
+
          Int_t nentries1 = pmdcont->GetEntries();
 
          AliDebug(1,Form("Total number of clusters/module = %d",nentries1));
 
          for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
            {
-               pmdcl = (AliPMDcluster*)pmdcont->UncheckedAt(ient1);
+             pmdcl = (AliPMDcluster*)pmdcont->UncheckedAt(ient1);
              idet        = pmdcl->GetDetector();
              ismn        = pmdcl->GetSMN();
              clusdata[0] = pmdcl->GetClusX();
@@ -615,13 +686,37 @@ void AliPMDClusterFinder::Digits2RecPoints(AliRawReader *rawReader,
                {
                  Int_t celldataX = pmdcl->GetClusCellX(ihit);
                  Int_t celldataY = pmdcl->GetClusCellY(ihit);
-                 AddRecHit(celldataX, celldataY);
+                 Int_t celldataTr = pmdcl->GetClusCellTrack(ihit);
+                 Int_t celldataPid   = pmdcl->GetClusCellPid(ihit);
+                 AddRecHit(celldataX, celldataY, celldataTr, celldataPid);
+                 //AddRecHit(celldataX, celldataY);
                }
              branch2->Fill();
              ResetRechit();
 
            }
          pmdcont->Delete();
+
+
+         // Added single isolated cell for offline gain calibration
+         nentries1 = pmdisocell->GetEntries();
+         AliDebug(1,Form("Total number of isolated single cell clusters = %d",nentries1));
+         
+         for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
+           {
+             pmdiso = (AliPMDisocell*)pmdisocell->UncheckedAt(ient1);
+             idet = pmdiso->GetDetector();
+             ismn = pmdiso->GetSmn();
+             clusdata[0] = (Float_t) pmdiso->GetRow();
+             clusdata[1] = (Float_t) pmdiso->GetCol();
+             clusdata[2] = pmdiso->GetADC();
+             clusdata[3] = 1.;
+             clusdata[4] = -99.;
+             clusdata[5] = -99.;
+      
+             AddRecPoint(idet,ismn,clusdata);
+           }
+         pmdisocell->Delete();
          
          branch1->Fill();
          ResetRecpoint();
@@ -637,12 +732,14 @@ void AliPMDClusterFinder::Digits2RecPoints(AliRawReader *rawReader,
       delete [] precpvADC;
 
     } // DDL Loop
+
   
   ResetCellADC();
   
   //   delete the pointers
   delete pmdclust;
   delete pmdcont;
+  delete pmdisocell;
 
 }
 // ------------------------------------------------------------------------- //
@@ -654,8 +751,15 @@ void AliPMDClusterFinder::Digits2RecPoints(Int_t ievt, AliRawReader *rawReader)
   //
 
   Float_t  clusdata[6];
+
   TObjArray pmdddlcont;
+
+  //AliPMDcluster *pmdcl  = 0x0;
+  AliPMDisocell *pmdiso  = 0x0;
+
+
   TObjArray *pmdcont = new TObjArray();
+  TObjArray *pmdisocell = new TObjArray();
 
   AliPMDClustering *pmdclust = new AliPMDClusteringV1();
 
@@ -799,6 +903,8 @@ void AliPMDClusterFinder::Digits2RecPoints(Int_t ievt, AliRawReader *rawReader)
            {
              for (Int_t icol = 0; icol < kCol; icol++)
                {
+                 fCellTrack[irow][icol] = -1;
+                 fCellPid[irow][icol]   = -1;
                  fCellADC[irow][icol] = 
                    (Double_t) precpvADC[indexsmn][irow][icol];
                } // row
@@ -835,7 +941,10 @@ void AliPMDClusterFinder::Digits2RecPoints(Int_t ievt, AliRawReader *rawReader)
              idet = 1;
            }
 
-         pmdclust->DoClust(idet,ismn,fCellADC,pmdcont);
+         //pmdclust->DoClust(idet,ismn,fCellADC,pmdisocell,pmdcont);
+         pmdclust->DoClust(idet,ismn,fCellTrack,fCellPid,fCellADC,
+                           pmdisocell,pmdcont);
+
          Int_t nentries1 = pmdcont->GetEntries();
 
          AliDebug(1,Form("Total number of clusters/module = %d",nentries1));
@@ -860,13 +969,36 @@ void AliPMDClusterFinder::Digits2RecPoints(Int_t ievt, AliRawReader *rawReader)
                {
                  Int_t celldataX = pmdcl->GetClusCellX(ihit);
                  Int_t celldataY = pmdcl->GetClusCellY(ihit);
-                 AddRecHit(celldataX, celldataY);
+                 Int_t celldataTr = pmdcl->GetClusCellTrack(ihit);
+                 Int_t celldataPid = pmdcl->GetClusCellPid(ihit);
+                 AddRecHit(celldataX, celldataY, celldataTr, celldataPid);
+                 //AddRecHit(celldataX, celldataY);
                }
              branch2->Fill();
              ResetRechit();
 
            }
          pmdcont->Delete();
+
+         // Added single isolated cell for offline gain calibration
+         nentries1 = pmdisocell->GetEntries();
+         AliDebug(1,Form("Total number of isolated single cell clusters = %d",nentries1));
+         
+         for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
+           {
+             pmdiso = (AliPMDisocell*)pmdisocell->UncheckedAt(ient1);
+             idet = pmdiso->GetDetector();
+             ismn = pmdiso->GetSmn();
+             clusdata[0] = (Float_t) pmdiso->GetRow();
+             clusdata[1] = (Float_t) pmdiso->GetCol();
+             clusdata[2] = pmdiso->GetADC();
+             clusdata[3] = 1.;
+             clusdata[4] = -99.;
+             clusdata[5] = -99.;
+      
+             AddRecPoint(idet,ismn,clusdata);
+           }
+         pmdisocell->Delete();
          
          branch1->Fill();
          ResetRecpoint();
@@ -881,7 +1013,8 @@ void AliPMDClusterFinder::Digits2RecPoints(Int_t ievt, AliRawReader *rawReader)
       for (Int_t i=0; i<iSMN; i++) delete [] precpvADC[i];
       delete precpvADC;
     } // DDL Loop
-  
+
+
   ResetCellADC();
   
   fPMDLoader = fRunLoader->GetLoader("PMDLoader");  
@@ -890,7 +1023,7 @@ void AliPMDClusterFinder::Digits2RecPoints(Int_t ievt, AliRawReader *rawReader)
   //   delete the pointers
   delete pmdclust;
   delete pmdcont;
-
+  delete pmdisocell;
 }
 // ------------------------------------------------------------------------- //
 void AliPMDClusterFinder::SetCellEdepCut(Float_t ecut)
@@ -909,13 +1042,14 @@ void AliPMDClusterFinder::AddRecPoint(Int_t idet,Int_t ismn,Float_t *clusdata)
   delete newrecpoint;
 }
 // ------------------------------------------------------------------------- //
-void AliPMDClusterFinder::AddRecHit(Int_t celldataX,Int_t celldataY)
+void AliPMDClusterFinder::AddRecHit(Int_t celldataX,Int_t celldataY,
+                                   Int_t celldataTr, Int_t celldataPid)
 {
   // Add associated cell hits to the Reconstructed points
   //
   TClonesArray &lrechits = *fRechits;
   AliPMDrechit *newrechit;
-  newrechit = new AliPMDrechit(celldataX, celldataY);
+  newrechit = new AliPMDrechit(celldataX, celldataY, celldataTr, celldataPid);
   new(lrechits[fNhit++]) AliPMDrechit(newrechit);
   delete newrechit;
 }
@@ -928,12 +1062,13 @@ void AliPMDClusterFinder::ResetCellADC()
     {
       for(Int_t icol = 0; icol < fgkCol; icol++)
        {
-         fCellADC[irow][icol] = 0.;
+         fCellTrack[irow][icol] = -1;
+         fCellPid[irow][icol]   = -1;
+         fCellADC[irow][icol]   = 0.;
        }
     }
 }
 // ------------------------------------------------------------------------- //
-
 void AliPMDClusterFinder::ResetRecpoint()
 {
   // Clear the list of reconstructed points
@@ -978,7 +1113,6 @@ void AliPMDClusterFinder::UnLoadClusters()
   fPMDLoader->UnloadRecPoints();
 }
 // ------------------------------------------------------------------------- //
-
 AliPMDCalibData* AliPMDClusterFinder::GetCalibGain() const
 {
   // The run number will be centralized in AliCDBManager,
@@ -995,9 +1129,7 @@ AliPMDCalibData* AliPMDClusterFinder::GetCalibGain() const
   
   return calibdata;
 }
-
 // ------------------------------------------------------------------------- //
-
 AliPMDPedestal* AliPMDClusterFinder::GetCalibPed() const
 {
   // The run number will be centralized in AliCDBManager,
index 7881fb0..153efb3 100644 (file)
@@ -38,7 +38,8 @@ class AliPMDClusterFinder : public TObject
   void Digits2RecPoints(Int_t ievt, AliRawReader *rawReader);
   void SetCellEdepCut(Float_t ecut);
   void AddRecPoint(Int_t idet, Int_t ismn, Float_t * clusdata);
-  void AddRecHit(Int_t celldataX, Int_t celldataY);
+  void AddRecHit(Int_t celldataX, Int_t celldataY, Int_t celldataTr,
+                Int_t celldataPid);
   void ResetCellADC();
   void ResetRecpoint();
   void ResetRechit();
@@ -72,8 +73,10 @@ class AliPMDClusterFinder : public TObject
   static const Int_t fgkRow = 48; // Total number of rows in one unitmodule
   static const Int_t fgkCol = 96; // Total number of cols in one unitmodule
   Double_t fCellADC[fgkRow][fgkCol]; // Array containing individual cell ADC
+  Int_t    fCellTrack[fgkRow][fgkCol]; // Array containing individual cell tr
+  Int_t    fCellPid[fgkRow][fgkCol]; // Array containing individual cell pid
 
-  ClassDef(AliPMDClusterFinder,12) // To run PMD clustering
+  ClassDef(AliPMDClusterFinder,13) // To run PMD clustering
 };
 #endif
 
index 4764e66..0c07293 100644 (file)
@@ -23,11 +23,12 @@ class AliPMDClustering: public TObject
   AliPMDClustering(){};
   virtual ~AliPMDClustering(){};
 
-  virtual void DoClust(Int_t idet, Int_t ismn, Double_t celladc[][96],
-                      TObjArray *pmdcont) = 0;
+  virtual void DoClust(Int_t idet, Int_t ismn, Int_t celltrack[][96],
+                      Int_t cellpid[][96], Double_t celladc[][96],
+                      TObjArray *pmdisocell, TObjArray *pmdcont) = 0;
 
   virtual void SetEdepCut(Float_t decut) = 0;
 
-  ClassDef(AliPMDClustering,6) // Does clustering for PMD
+  ClassDef(AliPMDClustering,7) // Does clustering for PMD
 };
 #endif
index a081946..b96eb60 100644 (file)
@@ -50,6 +50,7 @@
 
 #include "AliPMDcludata.h"
 #include "AliPMDcluster.h"
+#include "AliPMDisocell.h"
 #include "AliPMDClustering.h"
 #include "AliPMDClusteringV1.h"
 #include "AliLog.h"
@@ -95,8 +96,11 @@ AliPMDClusteringV1::~AliPMDClusteringV1()
   delete fPMDclucont;
 }
 // ------------------------------------------------------------------------ //
-void AliPMDClusteringV1::DoClust(Int_t idet, Int_t ismn, 
-                                Double_t celladc[48][96], TObjArray *pmdcont)
+void AliPMDClusteringV1::DoClust(Int_t idet, Int_t ismn,
+                                Int_t celltrack[48][96],
+                                Int_t cellpid[48][96],
+                                Double_t celladc[48][96],
+                                TObjArray *pmdisocell, TObjArray *pmdcont)
 {
   // main function to call other necessary functions to do clustering
   //
@@ -108,6 +112,7 @@ void AliPMDClusteringV1::DoClust(Int_t idet, Int_t ismn,
 
   Int_t    i,  j, nmx1, incr, id, jd;
   Int_t    celldataX[kNmaxCell], celldataY[kNmaxCell];
+  Int_t    celldataTr[kNmaxCell], celldataPid[kNmaxCell];
   Float_t  clusdata[6];
   Double_t cutoff, ave;
   Double_t edepcell[kNMX];
@@ -116,6 +121,10 @@ void AliPMDClusteringV1::DoClust(Int_t idet, Int_t ismn,
   Double_t *cellenergy = new Double_t [11424];
   
 
+  // call the isolated cell search method
+
+  CalculateIsoCell(idet, ismn, celladc, pmdisocell);
+
   // ndimXr and ndimYr are different because of different module size
 
   Int_t ndimXr = 0;
@@ -137,7 +146,6 @@ void AliPMDClusteringV1::DoClust(Int_t idet, Int_t ismn,
       cellenergy[i] = 0.;
   }
 
-
   Int_t kk = 0;
   for (i = 0; i < kNDIMX; i++)
     {
@@ -231,7 +239,6 @@ void AliPMDClusteringV1::DoClust(Int_t idet, Int_t ismn,
        {
          clusdata[0] = cluX0 - (48-1) + cluY0/2.;
        }         
-      
 
       clusdata[1]     = cluY0;
       clusdata[2]     = cluADC;
@@ -258,10 +265,24 @@ void AliPMDClusteringV1::DoClust(Int_t idet, Int_t ismn,
            }
          
          celldataY[ihit] = cellcol;
-       }
+         
+         Int_t irow = celldataX[ihit];
+         Int_t icol = celldataY[ihit];
 
+         if ((irow >= 0 && irow < 48) && (icol >= 0 && icol < 96))
+           {
+             celldataTr[ihit]  = celltrack[irow][icol];
+             celldataPid[ihit] = cellpid[irow][icol];
+           }
+         else
+           {
+             celldataTr[ihit] = -1;
+             celldataPid[ihit] = -1;
+           }
+       }
 
-      pmdcl = new AliPMDcluster(idet, ismn, clusdata, celldataX, celldataY);
+      pmdcl = new AliPMDcluster(idet, ismn, clusdata, celldataX, celldataY,
+                               celldataTr, celldataPid);
       pmdcont->Add(pmdcl);
     }
   
@@ -898,6 +919,54 @@ Double_t AliPMDClusteringV1::Distance(Double_t x1, Double_t y1,
   return TMath::Sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
 }
 // ------------------------------------------------------------------------ //
+void AliPMDClusteringV1::CalculateIsoCell(Int_t idet, Int_t ismn, Double_t celladc[][96], TObjArray *pmdisocell)
+{
+  // Does isolated cell search for offline calibration
+
+  AliPMDisocell *isocell = 0;
+
+  const Int_t kMaxRow = 48;
+  const Int_t kMaxCol = 96;
+  const Int_t kCellNeighbour = 6;
+
+  Int_t id1, jd1;
+
+  Int_t neibx[6] = {1,0,-1,-1,0,1};
+  Int_t neiby[6] = {0,1,1,0,-1,-1};
+
+
+  for(Int_t irow = 0; irow < kMaxRow; irow++)
+    {
+      for(Int_t icol = 0; icol < kMaxCol; icol++)
+       {
+         if(celladc[irow][icol] > 0)
+           {
+             Int_t isocount = 0;
+             for(Int_t ii = 0; ii < kCellNeighbour; ii++)
+               {
+                 id1 = irow + neibx[ii];
+                 jd1 = icol + neiby[ii];
+                 Float_t adc = (Float_t) celladc[id1][jd1];
+                 if(adc == 0.)
+                   {
+                     isocount++;
+                     if(isocount == kCellNeighbour)
+                       {
+                         Float_t cadc = (Float_t) celladc[irow][icol];
+
+                         isocell = new AliPMDisocell(idet,ismn,irow,icol,cadc);
+                         pmdisocell->Add(isocell);
+                         
+                       }
+                   }
+               }  // neigh cell cond.
+           }
+       }
+    }
+
+
+}
+// ------------------------------------------------------------------------ //
 void AliPMDClusteringV1::SetEdepCut(Float_t decut)
 {
   fCutoff = decut;
index 2f43e27..165a3d7 100644 (file)
@@ -22,6 +22,7 @@ class TNtuple;
 class TObjArray;
 class AliPMDcluster;
 class AliPMDcludata;
+
 class AliPMDClusteringV1: public AliPMDClustering
 {
  public:
@@ -30,13 +31,16 @@ class AliPMDClusteringV1: public AliPMDClustering
   AliPMDClusteringV1 &operator=(const AliPMDClusteringV1 &pmdclv1);
   virtual ~AliPMDClusteringV1();
 
-  void     DoClust(Int_t idet, Int_t ismn, Double_t celladc[][96],
-                  TObjArray *pmdcont);
+  void     DoClust(Int_t idet, Int_t ismn, Int_t celltrack[][96],
+                  Int_t cellpid[][96], Double_t celladc[][96],
+                  TObjArray *pmdisocell, TObjArray *pmdcont);
   Int_t    CrClust(Double_t ave, Double_t cutoff, Int_t nmx1,
                   Int_t iord1[], Double_t edepcell[]);
   void     RefClust(Int_t incr, Double_t edepcell[]);
   Double_t Distance(Double_t x1, Double_t y1,
                    Double_t x2, Double_t y2);
+  void     CalculateIsoCell(Int_t idet, Int_t ism,
+                           Double_t celladc[][96], TObjArray *pmdisocell);
   void     SetEdepCut(Float_t decut);
   
  protected:
@@ -60,6 +64,6 @@ class AliPMDClusteringV1: public AliPMDClustering
 
   Float_t  fCutoff; // Energy(ADC) cutoff per cell before clustering
 
-  ClassDef(AliPMDClusteringV1,5) // Does clustering for PMD
+  ClassDef(AliPMDClusteringV1,6) // Does clustering for PMD
 };
 #endif
index fb08351..7191a53 100644 (file)
@@ -92,7 +92,10 @@ AliPMDClusteringV2::~AliPMDClusteringV2()
 // ------------------------------------------------------------------------ //
 
 void AliPMDClusteringV2::DoClust(Int_t idet, Int_t ismn, 
-                                Double_t celladc[48][96], TObjArray *pmdcont)
+                                Int_t celltrack[48][96],
+                                Int_t cellpid[48][96],
+                                Double_t celladc[48][96],
+                                TObjArray *pmdisocell, TObjArray *pmdcont)
 {
   // main function to call other necessary functions to do clustering
   //
@@ -104,6 +107,7 @@ void AliPMDClusteringV2::DoClust(Int_t idet, Int_t ismn,
   Int_t    ndimXr = 0;
   Int_t    ndimYr = 0;
   Int_t    celldataX[kNmaxCell], celldataY[kNmaxCell];
+  Int_t    celldataTr[kNmaxCell], celldataPid[kNmaxCell];
   Float_t  clusdata[6];  
   Double_t cutoff, ave;
   Double_t edepcell[kNMX];
@@ -234,9 +238,12 @@ void AliPMDClusteringV2::DoClust(Int_t idet, Int_t ismn,
              celldataX[ihit] = (Int_t) ((cellX - (48-1) + cellY/2.) + 0.5 );
            }     
          celldataY[ihit] = (Int_t) (cellY + 0.5);
+         celldataTr[ihit] = -1;
+         celldataPid[ihit] = -1;
        }
 
-      pmdcl = new AliPMDcluster(idet, ismn, clusdata, celldataX, celldataY);
+      pmdcl = new AliPMDcluster(idet, ismn, clusdata, celldataX, celldataY,
+                               celldataTr, celldataPid);
       pmdcont->Add(pmdcl);
     }
   fPMDclucont->Delete();
index 2330b53..cbb4287 100644 (file)
@@ -28,8 +28,9 @@ class AliPMDClusteringV2 : public AliPMDClustering
   AliPMDClusteringV2 &operator=(const AliPMDClusteringV2 &pmdclv2);
   virtual ~AliPMDClusteringV2();
   
-  void     DoClust(Int_t idet, Int_t ismn, Double_t celladc[][96],
-                  TObjArray *pmdcont);
+  void     DoClust(Int_t idet, Int_t ismn, Int_t celltrack[][96],
+                  Int_t cellpid[][96], Double_t celladc[][96],
+                  TObjArray *pmdisocell, TObjArray *pmdcont);
   Int_t    CrClust(Double_t ave, Double_t cutoff, Int_t nmx1,
                   Int_t iord1[], Double_t edepcell[]);
   void     RefClust(Int_t incr, Double_t edepcell[]);
@@ -60,7 +61,7 @@ class AliPMDClusteringV2 : public AliPMDClustering
 
   Float_t fCutoff; // Energy(ADC) cutoff per cell before clustering
   
-  ClassDef(AliPMDClusteringV2,3) // Does clustering for PMD
+  ClassDef(AliPMDClusteringV2,4) // Does clustering for PMD
 };
 #endif
     
index e6188cf..f8d0c5f 100644 (file)
@@ -84,12 +84,14 @@ AliPMDDigitizer::AliPMDDigitizer() :
        {
          for (Int_t k = 0; k < fgkCol; k++)
            {
-             fCPV[i][j][k] = 0.;
-             fPRE[i][j][k] = 0.;
-             fCPVCounter[i][j][k] =  0; 
-             fPRECounter[i][j][k] =  0;
-             fCPVTrackNo[i][j][k] = -1;
-             fPRETrackNo[i][j][k] = -1;
+             fCPV[i][j][k]         = 0.;
+             fPRE[i][j][k]         = 0.;
+             fCPVCounter[i][j][k]  =  0; 
+             fPRECounter[i][j][k]  =  0;
+             fCPVTrackNo[i][j][k]  = -1;
+             fPRETrackNo[i][j][k]  = -1;
+             fCPVTrackPid[i][j][k] = -1;
+             fPRETrackPid[i][j][k] = -1;
            }
        }
     }
@@ -152,12 +154,14 @@ AliPMDDigitizer::AliPMDDigitizer(AliRunDigitizer* manager):
        {
          for (Int_t k = 0; k < fgkCol; k++)
            {
-             fCPV[i][j][k] = 0.;
-             fPRE[i][j][k] = 0.;
-             fCPVCounter[i][j][k] =  0; 
-             fPRECounter[i][j][k] =  0;
-             fCPVTrackNo[i][j][k] = -1;
-             fPRETrackNo[i][j][k] = -1;
+             fCPV[i][j][k]         = 0.;
+             fPRE[i][j][k]         = 0.;
+             fCPVCounter[i][j][k]  =  0; 
+             fPRECounter[i][j][k]  =  0;
+             fCPVTrackNo[i][j][k]  = -1;
+             fPRETrackNo[i][j][k]  = -1;
+             fCPVTrackPid[i][j][k] = -1;
+             fPRETrackPid[i][j][k] = -1;
            }
        }
     }
@@ -276,6 +280,17 @@ void AliPMDDigitizer::Hits2SDigits(Int_t ievt)
   AliDebug(1,Form("Event Number = %d",ievt));
   Int_t nparticles = fRunLoader->GetHeader()->GetNtrack();
   AliDebug(1,Form("Number of Particles = %d",nparticles));
+  //
+  // Ajay on 24th May 2009
+  //No of primary
+  Int_t nprimary   = fRunLoader->GetHeader()->GetNprimary();
+  Int_t  * mtraPid  = new Int_t [nprimary]; 
+  for(Int_t i = 0; i < nprimary; i++)
+    {
+      mtraPid[i] = -1; 
+    }
+  //
+
   fRunLoader->GetEvent(ievt);
   // ------------------------------------------------------- //
   // Pointer to specific detector hits.
@@ -357,6 +372,8 @@ void AliPMDDigitizer::Hits2SDigits(Int_t ievt)
              trackpid=trackpidOld;
              trackno=tracknoOld;
              
+             mtraPid[trackno] = mtrackpid;
+             
              //-----------------end of modification----------------
              xPos = fPMDHit->X();
              yPos = fPMDHit->Y();
@@ -438,6 +455,7 @@ void AliPMDDigitizer::Hits2SDigits(Int_t ievt)
   Float_t deltaE      = 0.;
   Int_t   detno       = 0;
   Int_t   trno        = -1;
+  Int_t   trpid       = -99;
 
   for (Int_t idet = 0; idet < 2; idet++)
     {
@@ -451,17 +469,19 @@ void AliPMDDigitizer::Hits2SDigits(Int_t ievt)
                    {
                      deltaE = fPRE[ism][jrow][kcol];
                      trno   = fPRETrackNo[ism][jrow][kcol];
+                     trpid  = mtraPid[trno]; // added
                      detno = 0;
                    }
                  else if (idet == 1)
                    {
                      deltaE = fCPV[ism][jrow][kcol];
                      trno   = fCPVTrackNo[ism][jrow][kcol];
+                     trpid  = mtraPid[trno]; // added
                      detno = 1;
                    }
                  if (deltaE > 0.)
                    {
-                     AddSDigit(trno,detno,ism,jrow,kcol,deltaE);
+                     AddSDigit(trno,trpid,detno,ism,jrow,kcol,deltaE);
                    }
                }
            }
@@ -471,6 +491,7 @@ void AliPMDDigitizer::Hits2SDigits(Int_t ievt)
     }
   fPMDLoader->WriteSDigits("OVERWRITE");
   ResetCellADC();
+  delete [] mtraPid;
 }
 //____________________________________________________________________________
 
@@ -499,6 +520,18 @@ void AliPMDDigitizer::Hits2Digits(Int_t ievt)
   AliDebug(1,Form("Event Number =  %d",ievt));
   Int_t nparticles = fRunLoader->GetHeader()->GetNtrack();
   AliDebug(1,Form("Number of Particles = %d", nparticles));
+
+  //
+  // Ajay on 24th May 2009
+  //No of primary
+  Int_t nprimary   = fRunLoader->GetHeader()->GetNprimary();
+  Int_t  * mtraPid  = new Int_t [nprimary]; 
+  for(Int_t i = 0; i < nprimary; i++)
+    {
+      mtraPid[i] = -1; 
+    }
+  //
+
   fRunLoader->GetEvent(ievt);
   // ------------------------------------------------------- //
   // Pointer to specific detector hits.
@@ -589,6 +622,8 @@ void AliPMDDigitizer::Hits2Digits(Int_t ievt)
              trackpid=trackpidOld;
              trackno=tracknoOld;
              
+             mtraPid[mtrackno] = mtrackpid;  // added by Ajay
+             
              //-----------------end of modification----------------
              xPos = fPMDHit->X();
              yPos = fPMDHit->Y();
@@ -673,6 +708,8 @@ void AliPMDDigitizer::Hits2Digits(Int_t ievt)
   Float_t deltaE = 0.;
   Int_t detno = 0;
   Int_t trno = 1;
+  Int_t trpid = -99;
+
   for (Int_t idet = 0; idet < 2; idet++)
   {
       for (Int_t ism = 0; ism < fgkTotUM; ism++)
@@ -685,13 +722,15 @@ void AliPMDDigitizer::Hits2Digits(Int_t ievt)
                  {
                      deltaE = fPRE[ism][jrow][kcol];
                      trno   = fPRETrackNo[ism][jrow][kcol];
-                     detno = 0;
+                     trpid  = mtraPid[trno];   // added
+                     detno  = 0;
                  }
                  else if (idet == 1)
                  {
                      deltaE = fCPV[ism][jrow][kcol];
                      trno   = fCPVTrackNo[ism][jrow][kcol];
-                     detno = 1;
+                     trpid  = mtraPid[trno];   // added
+                     detno  = 1;
                  }
                  if (deltaE > 0.)
                  {
@@ -720,7 +759,7 @@ void AliPMDDigitizer::Hits2Digits(Int_t ievt)
                      if (adc > 0.)
                      {
                          adc += (pedmean + 3.0*pedrms);
-                         AddDigit(trno,detno,ism,jrow,kcol,adc);
+                         AddDigit(trno,trpid,detno,ism,jrow,kcol,adc);
                      }
                  }
              } // column loop
@@ -732,7 +771,8 @@ void AliPMDDigitizer::Hits2Digits(Int_t ievt)
   
   fPMDLoader->WriteDigits("OVERWRITE");
   ResetCellADC();
-  
+
+  delete [] mtraPid;
 }
 //____________________________________________________________________________
 
@@ -766,7 +806,7 @@ void AliPMDDigitizer::SDigits2Digits(Int_t ievt)
   if (!fDigits) fDigits = new TClonesArray("AliPMDdigit", 1000);
   treeD->Branch("PMDDigit", &fDigits, bufsize);
 
-  Int_t   trno, det, smn;
+  Int_t   trno, trpid, det, smn;
   Int_t   irow, icol;
   Float_t edep, adc;
 
@@ -782,6 +822,7 @@ void AliPMDDigitizer::SDigits2Digits(Int_t ievt)
        {
          pmdsdigit = (AliPMDsdigit*)fSDigits->UncheckedAt(ient);
          trno   = pmdsdigit->GetTrackNumber();
+         trpid  = pmdsdigit->GetTrackPid();
          det    = pmdsdigit->GetDetector();
          smn    = pmdsdigit->GetSMNumber();
          irow   = pmdsdigit->GetRow();
@@ -810,7 +851,7 @@ void AliPMDDigitizer::SDigits2Digits(Int_t ievt)
          if(adc > 0.)
          {
              adc += (pedmean + 3.0*pedrms);
-             AddDigit(trno,det,smn,irow,icol,adc);
+             AddDigit(trno,trpid,det,smn,irow,icol,adc);
          }
 
        }
@@ -860,8 +901,9 @@ void AliPMDDigitizer::Exec(Option_t *option)
 
   Float_t adc;
   Float_t deltaE = 0.;
-  Int_t detno = 0;
-  Int_t trno = 1;
+  Int_t detno    = 0;
+  Int_t trno     = 1;
+  Int_t trpid    = -99;
 
   for (Int_t idet = 0; idet < 2; idet++)
     {
@@ -875,13 +917,15 @@ void AliPMDDigitizer::Exec(Option_t *option)
                    {
                      deltaE = fPRE[ism][jrow][kcol];
                      trno   = fPRETrackNo[ism][jrow][kcol];
-                     detno = 0;
+                     trpid  = fPRETrackPid[ism][jrow][kcol];
+                     detno  = 0;
                    }
                  else if (idet == 1)
                    {
                      deltaE = fCPV[ism][jrow][kcol];
                      trno   = fCPVTrackNo[ism][jrow][kcol];
-                     detno = 1;
+                     trpid  = fCPVTrackPid[ism][jrow][kcol];
+                     detno  = 1;
                    }
                  if (deltaE > 0.)
                    {
@@ -911,7 +955,7 @@ void AliPMDDigitizer::Exec(Option_t *option)
                      if (adc > 0.)
                      {
                          adc += (pedmean + 3.0*pedrms);
-                         AddDigit(trno,detno,ism,jrow,kcol,adc);
+                         AddDigit(trno,trpid,detno,ism,jrow,kcol,adc);
                      }
 
                    }
@@ -1139,7 +1183,7 @@ void AliPMDDigitizer::MergeSDigits(Int_t filenumber, Int_t troffset)
   if (!fSDigits) fSDigits = new TClonesArray("AliPMDsdigit", 1000);
   branch->SetAddress(&fSDigits);
 
-  Int_t   itrackno, idet, ism;
+  Int_t   itrackno, itrackpid, idet, ism;
   Int_t   ixp, iyp;
   Float_t edep;
   Int_t nmodules = (Int_t) treeS->GetEntries();
@@ -1154,6 +1198,7 @@ void AliPMDDigitizer::MergeSDigits(Int_t filenumber, Int_t troffset)
        {
          pmdsdigit = (AliPMDsdigit*)fSDigits->UncheckedAt(ient);
          itrackno  = pmdsdigit->GetTrackNumber();
+         itrackpid = pmdsdigit->GetTrackPid();
          idet      = pmdsdigit->GetDetector();
          ism       = pmdsdigit->GetSMNumber();
          ixp       = pmdsdigit->GetRow();
@@ -1164,6 +1209,7 @@ void AliPMDDigitizer::MergeSDigits(Int_t filenumber, Int_t troffset)
              if (fPRE[ism][ixp][iyp] < edep)
                {
                  fPRETrackNo[ism][ixp][iyp] = troffset + itrackno;
+                 fPRETrackPid[ism][ixp][iyp] = itrackpid;
                }
              fPRE[ism][ixp][iyp] += edep;
            }
@@ -1172,6 +1218,7 @@ void AliPMDDigitizer::MergeSDigits(Int_t filenumber, Int_t troffset)
              if (fCPV[ism][ixp][iyp] < edep)
                {
                  fCPVTrackNo[ism][ixp][iyp] = troffset + itrackno;
+                 fCPVTrackPid[ism][ixp][iyp] = itrackpid;
                }
              fCPV[ism][ixp][iyp] += edep;
            }
@@ -1412,25 +1459,27 @@ void AliPMDDigitizer::MeV2ADC(Float_t mev, Float_t & adc) const
     }
 }
 //____________________________________________________________________________
-void AliPMDDigitizer::AddSDigit(Int_t trnumber, Int_t det, Int_t smnumber,
-                               Int_t irow, Int_t icol, Float_t adc)
+void AliPMDDigitizer::AddSDigit(Int_t trnumber, Int_t trpid, Int_t det,
+                               Int_t smnumber, Int_t irow, Int_t icol,
+                               Float_t adc)
 {
   // Add SDigit
   //
   if (!fSDigits) fSDigits = new TClonesArray("AliPMDsdigit", 1000);
   TClonesArray &lsdigits = *fSDigits;
-  new(lsdigits[fNsdigit++])  AliPMDsdigit(trnumber,det,smnumber,irow,icol,adc);
+  new(lsdigits[fNsdigit++])  AliPMDsdigit(trnumber,trpid,det,smnumber,irow,icol,adc);
 }
 //____________________________________________________________________________
 
-void AliPMDDigitizer::AddDigit(Int_t trnumber, Int_t det, Int_t smnumber,
-                              Int_t irow, Int_t icol, Float_t adc)
+void AliPMDDigitizer::AddDigit(Int_t trnumber, Int_t trpid, Int_t det,
+                              Int_t smnumber, Int_t irow, Int_t icol,
+                              Float_t adc)
 {
   // Add Digit
   //
   if (!fDigits) fDigits = new TClonesArray("AliPMDdigit", 1000);
   TClonesArray &ldigits = *fDigits;
-  new(ldigits[fNdigit++]) AliPMDdigit(trnumber,det,smnumber,irow,icol,adc);
+  new(ldigits[fNdigit++]) AliPMDdigit(trnumber,trpid, det,smnumber,irow,icol,adc);
 }
 //____________________________________________________________________________
 
@@ -1489,10 +1538,12 @@ void AliPMDDigitizer::ResetCellADC()
        {
          for (Int_t k = 0; k < fgkCol; k++)
            {
-             fCPV[i][j][k] = 0.;
-             fPRE[i][j][k] = 0.;
-             fCPVTrackNo[i][j][k] = 0;
-             fPRETrackNo[i][j][k] = 0;
+             fCPV[i][j][k]         = 0.;
+             fPRE[i][j][k]         = 0.;
+             fCPVTrackNo[i][j][k]  = 0;
+             fPRETrackNo[i][j][k]  = 0;
+             fCPVTrackPid[i][j][k] = -1;
+             fPRETrackPid[i][j][k] = -1;
            }
        }
     }
index ba3cbaf..40d128f 100644 (file)
@@ -58,9 +58,9 @@ class AliPMDDigitizer:public AliDigitizer
   void TrackAssignment2CPVCell();
   void TrackAssignment2Cell();
   void MeV2ADC(Float_t mev, Float_t & adc) const;
-  void AddSDigit(Int_t trnumber, Int_t det, Int_t smnumber, 
+  void AddSDigit(Int_t trnumber, Int_t trpid, Int_t det, Int_t smnumber, 
                 Int_t irow, Int_t icol, Float_t adc);
-  void AddDigit(Int_t trnumber, Int_t det, Int_t smnumber, 
+  void AddDigit(Int_t trnumber, Int_t trpid, Int_t det, Int_t smnumber, 
                Int_t irow, Int_t icol, Float_t adc);
   void  SetZPosition(Float_t zpos);
   Float_t GetZPosition() const;
@@ -113,8 +113,13 @@ class AliPMDDigitizer:public AliDigitizer
   Int_t   fPRETrackNo[fgkTotUM][fgkRow][fgkCol]; //! PRE Array containing 
                                                  //  track number
 
+  Int_t   fCPVTrackPid[fgkTotUM][fgkRow][fgkCol]; //! CPV Array containing 
+                                                 //  track number
+  Int_t   fPRETrackPid[fgkTotUM][fgkRow][fgkCol]; //! PRE Array containing 
+                                                 //  track number
+
   
-  ClassDef(AliPMDDigitizer,8)    // To digitize PMD Hits
+  ClassDef(AliPMDDigitizer,9)    // To digitize PMD Hits
 };
 #endif
 
index 8e5bdf1..feed1eb 100644 (file)
@@ -196,15 +196,16 @@ void AliPMDRawToSDigits::Raw2SDigits(AliRunLoader *runLoader, AliRawReader *rawR
          for (Int_t icol = 0; icol < kCol; icol++)
            {
 
-             Int_t trno = -99999;
-             Int_t sig1 = precpvADC[indexsmn][irow][icol];
+             Int_t trno  = -99999;   // when extracted from raw data
+             Int_t trpid = -99999;   // when extracted from raw data
+             Int_t sig1  = precpvADC[indexsmn][irow][icol];
              
              // plug in a function to convert to adc to MeV
              Float_t edep = 0.;
              if (sig1 > 0)
                {
                  AdcToMeV(sig1,edep);
-                 AddSDigit(trno,idet,ismn,irow,icol,edep);
+                 AddSDigit(trno,trpid,idet,ismn,irow,icol,edep);
                }
            } // row
        }     // col
@@ -332,13 +333,14 @@ void AliPMDRawToSDigits::Raw2Digits(AliRunLoader *runLoader, AliRawReader *rawRe
        {
          for (Int_t icol = 0; icol < kCol; icol++)
            {
-             Int_t trno = -99999;
-             Int_t sig1 = precpvADC[indexsmn][irow][icol];
+             Int_t trno  = -99999;    // when extracted from raw
+             Int_t trpid = -99999;    // when extracted from raw
+             Int_t sig1  = precpvADC[indexsmn][irow][icol];
              
              // plug in a function to convert to adc to MeV
              if (sig1 > 0)
                {
-                 AddDigit(trno,idet,ismn,irow,icol,sig1);
+                 AddDigit(trno,trpid,idet,ismn,irow,icol,sig1);
                }
            } // row
        }     // col
@@ -382,25 +384,27 @@ void AliPMDRawToSDigits::AdcToMeV(Int_t adc, Float_t &edep)
 
 // ------------------------------------------------------------------------- //
 
-void AliPMDRawToSDigits::AddSDigit(Int_t trnumber, Int_t det, Int_t smnumber, 
+void AliPMDRawToSDigits::AddSDigit(Int_t trnumber, Int_t trpid, Int_t det,
+                                  Int_t smnumber, 
                                   Int_t irow, Int_t icol, Float_t adc)
 {
   // Add SDigit
   //
   if (!fSDigits) fSDigits = new TClonesArray("AliPMDsdigit", 1000);
   TClonesArray &lsdigits = *fSDigits;
-  new(lsdigits[fNsdigit++]) AliPMDsdigit(trnumber,det,smnumber,irow,icol,adc);
+  new(lsdigits[fNsdigit++]) AliPMDsdigit(trnumber,trpid,det,smnumber,irow,icol,adc);
 }
 
 // ------------------------------------------------------------------------- //
-void AliPMDRawToSDigits::AddDigit(Int_t trnumber, Int_t det, Int_t smnumber, 
+void AliPMDRawToSDigits::AddDigit(Int_t trnumber, Int_t trpid, Int_t det,
+                                 Int_t smnumber, 
                                  Int_t irow, Int_t icol, Float_t adc)
 {
   // Add Digit
   //
   if (!fDigits) fDigits = new TClonesArray("AliPMDdigit", 1000);
   TClonesArray &ldigits = *fDigits;
-  new(ldigits[fNdigit++]) AliPMDdigit(trnumber,det,smnumber,irow,icol,adc);
+  new(ldigits[fNdigit++]) AliPMDdigit(trnumber,trpid,det,smnumber,irow,icol,adc);
 }
 
 // ------------------------------------------------------------------------- //
index 6fb4cd9..94f70ea 100644 (file)
@@ -31,9 +31,9 @@ class AliPMDRawToSDigits : public TObject
   void Raw2SDigits(AliRunLoader *runLoader, AliRawReader *rawReader);
   void Raw2Digits(AliRunLoader *runLoader, AliRawReader *rawReader);
   void AdcToMeV(Int_t adc, Float_t &edep);
-  void AddSDigit(Int_t trnumber, Int_t det, Int_t smnumber, 
+  void AddSDigit(Int_t trnumber, Int_t trpid, Int_t det, Int_t smnumber, 
                 Int_t irow, Int_t icol, Float_t adc);
-  void AddDigit(Int_t trnumber, Int_t det, Int_t smnumber, 
+  void AddDigit(Int_t trnumber, Int_t trpid, Int_t det, Int_t smnumber, 
                Int_t irow, Int_t icol, Float_t adc);
 
   void ResetSDigit();
@@ -47,7 +47,7 @@ class AliPMDRawToSDigits : public TObject
   Int_t   fNsdigit;          // Digits counter
   Int_t   fNdigit;           // Digits counter
 
-  ClassDef(AliPMDRawToSDigits,0)    // Coverts Raw to SDigits
+  ClassDef(AliPMDRawToSDigits,1)    // Coverts Raw to SDigits
 };
 #endif
 
index 90fc096..decf8b6 100644 (file)
@@ -39,12 +39,15 @@ AliPMDcluster::AliPMDcluster():
     {
       fClusCellDataX[i] = 0;
       fClusCellDataY[i] = 0;
+      fClusCellTrack[i] = -1;
+      fClusCellPid[i]   = -1;
     }
 
 }
 // --------------------------------------------------------------------- //
 AliPMDcluster::AliPMDcluster(Int_t idet, Int_t ismn, Float_t *clusdata,
-                            Int_t *celldataX, Int_t *celldataY):
+                            Int_t *celldataX, Int_t *celldataY,
+                            Int_t *celltrack, Int_t *cellpid):
   fDet(idet),
   fSMN(ismn)
 {
@@ -57,6 +60,8 @@ AliPMDcluster::AliPMDcluster(Int_t idet, Int_t ismn, Float_t *clusdata,
     {
       fClusCellDataX[i] = celldataX[i];
       fClusCellDataY[i] = celldataY[i];
+      fClusCellTrack[i] = celltrack[i];
+      fClusCellPid[i]   = cellpid[i];
     }
 
 }
@@ -83,6 +88,8 @@ AliPMDcluster::AliPMDcluster(const AliPMDcluster &pmdcluster):
     {
       this->fClusCellDataX[i] = pmdcluster.fClusCellDataX[i];
       this->fClusCellDataY[i] = pmdcluster.fClusCellDataY[i];
+      this->fClusCellTrack[i] = pmdcluster.fClusCellTrack[i];
+      this->fClusCellPid[i]   = pmdcluster.fClusCellPid[i];
     }
 }
 // --------------------------------------------------------------------- //
@@ -102,6 +109,8 @@ AliPMDcluster & AliPMDcluster::operator=(const AliPMDcluster &pmdcluster)
        {
          this->fClusCellDataX[i] = pmdcluster.fClusCellDataX[i];
          this->fClusCellDataY[i] = pmdcluster.fClusCellDataY[i];
+         this->fClusCellTrack[i] = pmdcluster.fClusCellTrack[i];
+         this->fClusCellPid[i]   = pmdcluster.fClusCellPid[i];
        }
     }
   return *this;
@@ -164,3 +173,13 @@ Int_t AliPMDcluster::GetClusCellY(Int_t i) const
   return fClusCellDataY[i];
 }
 // --------------------------------------------------------------------- //
+Int_t AliPMDcluster::GetClusCellTrack(Int_t i) const
+{
+  return fClusCellTrack[i];
+}
+// --------------------------------------------------------------------- //
+Int_t AliPMDcluster::GetClusCellPid(Int_t i) const
+{
+  return fClusCellPid[i];
+}
+// --------------------------------------------------------------------- //
index 59a5da6..763b81a 100644 (file)
@@ -20,7 +20,8 @@ class AliPMDcluster : public TObject
  public:
   AliPMDcluster();
   AliPMDcluster(Int_t idet, Int_t ismn, Float_t *clusdata,
-               Int_t *celldataX, Int_t *celldataY);
+               Int_t *celldataX, Int_t *celldataY,
+               Int_t *celltrack, Int_t *cellpid);
   AliPMDcluster(AliPMDcluster *pmdcluster);
   AliPMDcluster (const AliPMDcluster &pmdcluster);  // copy constructor
   AliPMDcluster &operator=(const AliPMDcluster &pmdcluster); // assignment op
@@ -37,6 +38,8 @@ class AliPMDcluster : public TObject
   Float_t GetClusSigmaY() const;
   Int_t   GetClusCellX(Int_t i) const;
   Int_t   GetClusCellY(Int_t i) const;
+  Int_t   GetClusCellTrack(Int_t i) const;
+  Int_t   GetClusCellPid(Int_t i) const;
 
  protected:
 
@@ -44,7 +47,11 @@ class AliPMDcluster : public TObject
   Int_t   fSMN;               // Serial Module No.
   Int_t   fClusCellDataX[19]; // Array containing cell X
   Int_t   fClusCellDataY[19]; // Array containing cell Y
+  Int_t   fClusCellTrack[19]; // Array containing cell track no
+  Int_t   fClusCellPid[19];   // Array containing cell pid
+
   Float_t fClusData[6];       // Array containing cluster information
+
   /*
     fDet         : Det (0:PRE, 1:CPV), fSMN         : SerialModuleNo
     fClusData[0] : Cluster x         , fClusData[1] : Cluster y
@@ -52,7 +59,7 @@ class AliPMDcluster : public TObject
     fClusData[4] : Cluster SigmaX    , fClusData[5] : Cluster SigmaY
   */
   
-  ClassDef(AliPMDcluster,4) // Keep Cluster information
+  ClassDef(AliPMDcluster,5) // Keep Cluster information
 };
 
 #endif
index 8dab143..38f2682 100644 (file)
@@ -28,6 +28,7 @@ ClassImp(AliPMDdigit)
 
 AliPMDdigit::AliPMDdigit():
   fTrNumber(0),
+  fTrPid(0),
   fDet(0),
   fSMNumber(0),
   fRow(0),
@@ -37,9 +38,11 @@ AliPMDdigit::AliPMDdigit():
   // Default Constructor
 }
 
-AliPMDdigit::AliPMDdigit(Int_t trnumber, Int_t det, Int_t smnumber, 
+AliPMDdigit::AliPMDdigit(Int_t trnumber, Int_t trpid, Int_t det,
+                        Int_t smnumber, 
                         Int_t irow, Int_t icol, Float_t adc):
   fTrNumber(trnumber),
+  fTrPid(trpid),
   fDet(det),
   fSMNumber(smnumber),
   fRow(irow),
@@ -50,6 +53,7 @@ AliPMDdigit::AliPMDdigit(Int_t trnumber, Int_t det, Int_t smnumber,
 }
 AliPMDdigit::AliPMDdigit(AliPMDdigit *pmddigit):
   fTrNumber(0),
+  fTrPid(0),
   fDet(0),
   fSMNumber(0),
   fRow(0),
@@ -62,6 +66,7 @@ AliPMDdigit::AliPMDdigit(AliPMDdigit *pmddigit):
 AliPMDdigit::AliPMDdigit(const AliPMDdigit& pmddigit):
   TObject(pmddigit),
   fTrNumber(pmddigit.fTrNumber),
+  fTrPid(pmddigit.fTrPid),
   fDet(pmddigit.fDet),
   fSMNumber(pmddigit.fSMNumber),
   fRow(pmddigit.fRow),
@@ -75,6 +80,7 @@ AliPMDdigit & AliPMDdigit::operator=(const AliPMDdigit& pmddigit) {
   if(this != &pmddigit)
     {
       fTrNumber   = pmddigit.fTrNumber;
+      fTrPid      = pmddigit.fTrPid;
       fDet        = pmddigit.fDet;
       fSMNumber   = pmddigit.fSMNumber;
       fRow        = pmddigit.fRow;
@@ -91,6 +97,10 @@ Int_t AliPMDdigit::GetTrackNumber() const
 {
   return fTrNumber;
 }
+Int_t AliPMDdigit::GetTrackPid() const
+{
+  return fTrPid;
+}
 Int_t AliPMDdigit::GetDetector() const
 {
   return fDet;
index d12e9ad..ac1b99e 100644 (file)
@@ -17,7 +17,7 @@ class AliPMDdigit : public TObject
 {
  public:
   AliPMDdigit();
-  AliPMDdigit(Int_t trnumber, Int_t det, Int_t smnumber,
+  AliPMDdigit(Int_t trnumber, Int_t trpid, Int_t det, Int_t smnumber,
              Int_t irow, Int_t icol, Float_t adc);
   AliPMDdigit(AliPMDdigit *pmddigit);
   AliPMDdigit (const AliPMDdigit &pmddigit);  // copy constructor
@@ -26,6 +26,7 @@ class AliPMDdigit : public TObject
   virtual ~AliPMDdigit();
 
   Int_t   GetTrackNumber() const;
+  Int_t   GetTrackPid() const;
   Int_t   GetDetector() const;
   Int_t   GetSMNumber() const;
   Int_t   GetRow() const;
@@ -34,13 +35,14 @@ class AliPMDdigit : public TObject
 
  protected:
   Int_t   fTrNumber;    // Parent Track number
+  Int_t   fTrPid;       // Parent Track pid
   Int_t   fDet;         // Detecor Number (0:PRE, 1:CPV)
   Int_t   fSMNumber;    // Serial Module Number
   Int_t   fRow;         // Cell Row Number (0-47)
   Int_t   fColumn;      // Cell Column Number (0-95)
   Float_t fADC;         // Energy deposition(ADC) in a hexagonal cell
   
-  ClassDef(AliPMDdigit,4) // Digits object for Detector set:PMD
+  ClassDef(AliPMDdigit,5) // Digits object for Detector set:PMD
 };
 
 #endif
diff --git a/PMD/AliPMDisocell.cxx b/PMD/AliPMDisocell.cxx
new file mode 100644 (file)
index 0000000..bff86f9
--- /dev/null
@@ -0,0 +1,110 @@
+/***************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+#include "Riostream.h"
+#include "Rtypes.h"
+#include "AliPMDisocell.h"
+
+ClassImp(AliPMDisocell)
+
+AliPMDisocell::AliPMDisocell():
+  fDet(-1),
+  fSmn(-1),
+  fRow(-1),
+  fCol(-1),
+  fAdc(0.)
+{
+  // Default constructor
+}
+// --------------------------------------------------------------------- //
+AliPMDisocell::AliPMDisocell(Int_t idet, Int_t ismn, Int_t irow, Int_t icol, Float_t cadc):
+  fDet(idet),
+  fSmn(ismn),
+  fRow(irow),
+  fCol(icol),
+  fAdc(cadc)
+{
+  // Constructor
+}
+AliPMDisocell::AliPMDisocell(AliPMDisocell *pmdisocell):
+  fDet(-1),
+  fSmn(-1),
+  fRow(-1),
+  fCol(-1),
+  fAdc(0.)
+{
+  *this = *pmdisocell;
+}
+
+// --------------------------------------------------------------------- //
+// --------------------------------------------------------------------- //
+AliPMDisocell::AliPMDisocell(const AliPMDisocell &pmdisocell):
+  TObject(pmdisocell),
+  fDet(pmdisocell.fDet),
+  fSmn(pmdisocell.fSmn),
+  fRow(pmdisocell.fRow),
+  fCol(pmdisocell.fCol),
+  fAdc(pmdisocell.fAdc)
+{
+  //Copy Constructor 
+}
+// --------------------------------------------------------------------- //
+
+AliPMDisocell & AliPMDisocell::operator=(const AliPMDisocell &pmdisocell)
+{
+  // Assignment operator 
+  if(this != &pmdisocell)
+    {
+      fDet = pmdisocell.fDet;
+      fSmn = pmdisocell.fSmn;
+      fRow = pmdisocell.fRow;
+      fCol = pmdisocell.fCol;
+      fAdc = pmdisocell.fAdc;
+
+    }
+  return *this;
+}
+// --------------------------------------------------------------------- //
+
+AliPMDisocell::~AliPMDisocell()
+{
+  // Destructor
+}
+// --------------------------------------------------------------------- //
+Int_t AliPMDisocell::GetDetector() const
+{
+  return fDet;
+}
+// --------------------------------------------------------------------- //
+Int_t AliPMDisocell::GetSmn() const
+{
+  return fSmn;
+}
+// --------------------------------------------------------------------- //
+Int_t AliPMDisocell::GetRow() const
+{
+  return fRow;
+}
+// --------------------------------------------------------------------- //
+Int_t AliPMDisocell::GetCol() const
+{
+  return fCol;
+}
+// --------------------------------------------------------------------- //
+Float_t AliPMDisocell::GetADC() const
+{
+  return fAdc;
+}
+// --------------------------------------------------------------------- //
diff --git a/PMD/AliPMDisocell.h b/PMD/AliPMDisocell.h
new file mode 100644 (file)
index 0000000..957e333
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef ALIPMDISOCELL_H
+#define ALIPMDISOCELL_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+//-----------------------------------------------------//
+//                                                     //
+//  Date   : May 22, 2009                              //
+//                                                     //
+//  Store isolated single cell information             //
+//  to be used in offline calibartion                  //
+//                                                     //
+//-----------------------------------------------------//
+// Author -  B.K. Nandi
+//
+//#include "Rtypes.h"
+#include "TObject.h"
+
+class TClonesArray;
+
+class AliPMDisocell : public TObject
+{
+ public:
+  AliPMDisocell();
+  AliPMDisocell( Int_t idet, Int_t ismn, Int_t irow, Int_t icol, Float_t cadc);
+  AliPMDisocell(AliPMDisocell *pmdisocell);
+  AliPMDisocell (const AliPMDisocell &pmdisocell);  //copy constructor
+  AliPMDisocell &operator=(const AliPMDisocell &pmdisocell); //assignment op
+  
+  virtual ~AliPMDisocell();
+
+  Int_t   GetDetector() const;
+  Int_t   GetSmn() const;
+  Int_t   GetRow() const;
+  Int_t   GetCol() const;
+  Float_t GetADC() const;
+
+  
+ protected:
+
+  Int_t fDet;          // Pre = 0, CPV =1 plane 
+  Int_t fSmn;
+  Int_t fRow;
+  Int_t fCol;
+  Float_t fAdc;
+
+  ClassDef(AliPMDisocell,0) // Keep isolated single cell information
+};
+#endif
index 33386ef..cf95757 100644 (file)
@@ -28,21 +28,27 @@ ClassImp(AliPMDrechit)
 
 AliPMDrechit::AliPMDrechit():
   fXcell(0),
-  fYcell(0)
+  fYcell(0),
+  fTrcell(0),
+  fPidcell(0)
 {
   // Standard constructor
 }
 
-AliPMDrechit::AliPMDrechit(Int_t cellx, Int_t celly):
+AliPMDrechit::AliPMDrechit(Int_t cellx, Int_t celly, Int_t celltr, Int_t cellpid):
   fXcell(cellx),
-  fYcell(celly)
+  fYcell(celly),
+  fTrcell(celltr),
+  fPidcell(cellpid)
 
 {
   // Constructor
 }
 AliPMDrechit::AliPMDrechit(AliPMDrechit *pmdrechit):
   fXcell(0),
-  fYcell(0)
+  fYcell(0),
+  fTrcell(0),
+  fPidcell(0)
 {
   *this = *pmdrechit;
 }
@@ -50,7 +56,10 @@ AliPMDrechit::AliPMDrechit(AliPMDrechit *pmdrechit):
 AliPMDrechit::AliPMDrechit(const AliPMDrechit& source):
   TObject(source),
   fXcell(source.fXcell),
-  fYcell(source.fYcell)
+  fYcell(source.fYcell),
+  fTrcell(source.fTrcell),
+  fPidcell(source.fPidcell)
+
 {
   //Copy Constructor 
 
@@ -63,6 +72,8 @@ AliPMDrechit& AliPMDrechit::operator=(const AliPMDrechit& source)
     {
       fXcell = source.fXcell;
       fYcell = source.fYcell;
+      fTrcell = source.fTrcell;
+      fPidcell = source.fPidcell;
     }
   return *this;
 }
@@ -79,3 +90,11 @@ Int_t AliPMDrechit::GetCellY() const
 {
   return fYcell;
 }
+Int_t AliPMDrechit::GetCellTrack() const
+{
+  return fTrcell;
+}
+Int_t AliPMDrechit::GetCellPid() const
+{
+  return fPidcell;
+}
index 266b8f6..2eac763 100644 (file)
@@ -18,7 +18,7 @@ class AliPMDrechit : public TObject
 {
  public:
   AliPMDrechit();
-  AliPMDrechit(Int_t cellx, Int_t celly);
+  AliPMDrechit(Int_t cellx, Int_t celly, Int_t celltr, Int_t cellpid);
   AliPMDrechit(AliPMDrechit *pmdrechit);
   AliPMDrechit (const AliPMDrechit &alipmdrechit);  // copy constructor
   AliPMDrechit &operator=(const AliPMDrechit &alipmdrechit); // assignment op
@@ -27,12 +27,16 @@ class AliPMDrechit : public TObject
 
   Int_t   GetCellX() const;
   Int_t   GetCellY() const;
+  Int_t   GetCellTrack() const;
+  Int_t   GetCellPid() const;
   
  protected:
   Int_t   fXcell;         // x-position of the cell
   Int_t   fYcell;         // y-position of the cell
+  Int_t   fTrcell;        // track no of the cell
+  Int_t   fPidcell;       // track pid of the cell
   
-  ClassDef(AliPMDrechit,2) // To keep cell hit information
+  ClassDef(AliPMDrechit,3) // To keep cell hit information
 };
 
 #endif
index c0833ae..fda3429 100644 (file)
@@ -27,6 +27,7 @@ ClassImp(AliPMDsdigit)
 
 AliPMDsdigit::AliPMDsdigit():
   fTrNumber(0),
+  fTrPid(0),
   fDet(0),
   fSMN(0),
   fRow(0),
@@ -36,9 +37,10 @@ AliPMDsdigit::AliPMDsdigit():
   // Default Constructor
 }
 
-AliPMDsdigit::AliPMDsdigit(Int_t trnumber, Int_t det, Int_t smn,
+AliPMDsdigit::AliPMDsdigit(Int_t trnumber, Int_t trpid, Int_t det, Int_t smn,
                           Int_t irow, Int_t icol, Float_t edep):
   fTrNumber(trnumber),
+  fTrPid(trpid),
   fDet(det),
   fSMN(smn),
   fRow(irow),
@@ -50,6 +52,7 @@ AliPMDsdigit::AliPMDsdigit(Int_t trnumber, Int_t det, Int_t smn,
 
 AliPMDsdigit::AliPMDsdigit(AliPMDsdigit *pmdsdigit):
   fTrNumber(0),
+  fTrPid(0),
   fDet(0),
   fSMN(0),
   fRow(0),
@@ -62,6 +65,7 @@ AliPMDsdigit::AliPMDsdigit(AliPMDsdigit *pmdsdigit):
 AliPMDsdigit::AliPMDsdigit(const AliPMDsdigit& pmdsdigit):
   TObject(pmdsdigit),
   fTrNumber(pmdsdigit.fTrNumber),
+  fTrPid(pmdsdigit.fTrPid),
   fDet(pmdsdigit.fDet),
   fSMN(pmdsdigit.fSMN),
   fRow(pmdsdigit.fRow),
@@ -76,6 +80,7 @@ AliPMDsdigit & AliPMDsdigit::operator=(const AliPMDsdigit& pmdsdigit)
   if(this != &pmdsdigit)
     {
       fTrNumber   = pmdsdigit.fTrNumber;
+      fTrPid      = pmdsdigit.fTrPid;
       fDet        = pmdsdigit.fDet;
       fSMN        = pmdsdigit.fSMN;
       fRow        = pmdsdigit.fRow;
@@ -94,6 +99,10 @@ Int_t AliPMDsdigit::GetTrackNumber() const
 {
   return fTrNumber;
 }
+Int_t AliPMDsdigit::GetTrackPid() const
+{
+  return fTrPid;
+}
 Int_t AliPMDsdigit::GetDetector() const
 {
   return fDet;
index 7ca6998..8b1b271 100644 (file)
@@ -19,7 +19,7 @@ class AliPMDsdigit : public TObject
 
  public:
   AliPMDsdigit();
-  AliPMDsdigit(Int_t trnumber, Int_t det, Int_t smn,
+  AliPMDsdigit(Int_t trnumber, Int_t trpid, Int_t det, Int_t smn,
               Int_t irow, Int_t icol, Float_t edep);
   AliPMDsdigit(AliPMDsdigit *pmdsdigit);
   AliPMDsdigit (const AliPMDsdigit &pmdsdigit);  // copy constructor
@@ -28,6 +28,7 @@ class AliPMDsdigit : public TObject
   virtual ~AliPMDsdigit();
 
   Int_t   GetTrackNumber() const;
+  Int_t   GetTrackPid() const;
   Int_t   GetDetector() const;
   Int_t   GetSMNumber() const;
   Int_t   GetRow() const;
@@ -37,13 +38,14 @@ class AliPMDsdigit : public TObject
   
  protected:
   Int_t   fTrNumber;   // Parent Track Number
+  Int_t   fTrPid;      // Parent Track pid
   Int_t   fDet;        // Detector Number (0:PRE, 1:CPV)
   Int_t   fSMN;        // Serial Module Number
   Int_t   fRow;        // Cell Row Number (0-47)
   Int_t   fColumn;     // Cell Column Number (0-95)
   Float_t fEdep;       // Energy deposition in a hexagonal cell
   
-  ClassDef(AliPMDsdigit,4) // SDigits object for Detector set:PMD
+  ClassDef(AliPMDsdigit,5) // SDigits object for Detector set:PMD
 };
 
 #endif
index ca7c6ce..1c04d3e 100644 (file)
@@ -165,9 +165,12 @@ void AliPMDtracker::Clusters2Tracks(AliESDEvent *event)
          clusdata[3] = fPMDrecpoint->GetClusCells();
          clusdata[4] = fPMDrecpoint->GetClusSigmaX();
          clusdata[5] = fPMDrecpoint->GetClusSigmaY();
-
-         fPMDclin = new AliPMDrecpoint1(idet,ismn,clusdata);
-         fPMDcontin->Add(fPMDclin);
+         
+         if (clusdata[4] != -99. && clusdata[5] != -99.)
+           { 
+             fPMDclin = new AliPMDrecpoint1(idet,ismn,clusdata);
+             fPMDcontin->Add(fPMDclin);
+           }
        }
     }
 
index 614e364..815fd20 100644 (file)
@@ -1,7 +1,7 @@
 # -*- mode: cmake -*-
 
 set(SRCS
-AliPMDRecPoint.cxx AliPMDUtility.cxx AliPMDrecpoint1.cxx AliPMDrechit.cxx AliPMDcluster.cxx AliPMDClusteringV1.cxx AliPMDClusteringV2.cxx AliPMDclupid.cxx AliPMDEmpDiscriminator.cxx AliPMDClusterFinder.cxx AliPMDtracker.cxx AliPMDReconstructor.cxx AliPMDcludata.cxx AliPMDCalibPedestal.cxx AliPMDCalibGain.cxx AliPMDQADataMakerRec.cxx
+AliPMDRecPoint.cxx AliPMDUtility.cxx AliPMDrecpoint1.cxx AliPMDrechit.cxx AliPMDcluster.cxx AliPMDClusteringV1.cxx AliPMDClusteringV2.cxx AliPMDclupid.cxx AliPMDEmpDiscriminator.cxx AliPMDClusterFinder.cxx AliPMDtracker.cxx AliPMDReconstructor.cxx AliPMDcludata.cxx AliPMDCalibPedestal.cxx AliPMDCalibGain.cxx AliPMDQADataMakerRec.cxx AliPMDisocell.cxx AliPMDiso.cxx
 )
 
 # fill list of header files from list of source files
index 59c407e..e83e9b5 100644 (file)
@@ -26,4 +26,5 @@
 #pragma link C++ class  AliPMDCalibPedestal+;
 #pragma link C++ class  AliPMDCalibGain+;
 #pragma link C++ class  AliPMDQADataMakerRec+;
+#pragma link C++ class  AliPMDisocell+;
 #endif
index 97496b7..268fb6d 100644 (file)
@@ -1,7 +1,7 @@
 #-*- Mode: Makefile -*-
 # $Id$
 
-SRCS:= AliPMDRecPoint.cxx AliPMDUtility.cxx AliPMDrecpoint1.cxx AliPMDrechit.cxx AliPMDcluster.cxx AliPMDClusteringV1.cxx AliPMDClusteringV2.cxx AliPMDclupid.cxx AliPMDEmpDiscriminator.cxx AliPMDClusterFinder.cxx AliPMDtracker.cxx AliPMDReconstructor.cxx AliPMDcludata.cxx AliPMDCalibPedestal.cxx AliPMDCalibGain.cxx AliPMDQADataMakerRec.cxx
+SRCS:= AliPMDRecPoint.cxx AliPMDUtility.cxx AliPMDrecpoint1.cxx AliPMDrechit.cxx AliPMDcluster.cxx AliPMDClusteringV1.cxx AliPMDClusteringV2.cxx AliPMDclupid.cxx AliPMDEmpDiscriminator.cxx AliPMDClusterFinder.cxx AliPMDtracker.cxx AliPMDReconstructor.cxx AliPMDcludata.cxx AliPMDCalibPedestal.cxx AliPMDCalibGain.cxx AliPMDQADataMakerRec.cxx AliPMDisocell.cxx
 
 HDRS:= $(SRCS:.cxx=.h) AliPMDClustering.h AliPMDDiscriminator.h AliPMDcludata.h