adding analysis class for each sector
authorjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 7 Nov 2006 15:15:55 +0000 (15:15 +0000)
committerjgrosseo <jgrosseo@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 7 Nov 2006 15:15:55 +0000 (15:15 +0000)
PWG0/TPC/AliROCESDAnalysisSelector.cxx
PWG0/TPC/AliROCESDAnalysisSelector.h
PWG0/TPC/AliTPCClusterHistograms.cxx

index af3ffec475d775c00329ff044b6a2c1f531f1141..1c80ed1dccd2412d2737f2dfb5678d3a1a500df0 100644 (file)
@@ -54,12 +54,14 @@ ClassImp(AliROCESDAnalysisSelector)
 
 AliROCESDAnalysisSelector::AliROCESDAnalysisSelector() :
   AliSelector(),
 
 AliROCESDAnalysisSelector::AliROCESDAnalysisSelector() :
   AliSelector(),
-  fESDfriend(0),
-  fClusterHistograms(0)
+  fESDfriend(0)
 {
   //
   // Constructor. Initialization of pointers
   //
 {
   //
   // Constructor. Initialization of pointers
   //
+  
+  for (Int_t i=0; i<kTPCSectors; i++)
+    fClusterHistograms[i] = 0;
 }
 
 AliROCESDAnalysisSelector::~AliROCESDAnalysisSelector()
 }
 
 AliROCESDAnalysisSelector::~AliROCESDAnalysisSelector()
@@ -67,12 +69,6 @@ AliROCESDAnalysisSelector::~AliROCESDAnalysisSelector()
   //
   // Destructor
   //
   //
   // Destructor
   //
-
-  if (fClusterHistograms) {
-    delete fClusterHistograms;
-    fClusterHistograms = 0;    
-  }
-
 }
 
 void AliROCESDAnalysisSelector::SlaveBegin(TTree* tree)
 }
 
 void AliROCESDAnalysisSelector::SlaveBegin(TTree* tree)
@@ -80,9 +76,6 @@ void AliROCESDAnalysisSelector::SlaveBegin(TTree* tree)
   //
   
   AliSelector::SlaveBegin(tree);
   //
   
   AliSelector::SlaveBegin(tree);
-
-  fClusterHistograms = new AliTPCClusterHistograms("test","test");
-
 } 
 
 void AliROCESDAnalysisSelector::Init(TTree *tree)
 } 
 
 void AliROCESDAnalysisSelector::Init(TTree *tree)
@@ -132,6 +125,8 @@ Bool_t AliROCESDAnalysisSelector::Process(Long64_t entry)
 
   Int_t nTracks = fESD->GetNumberOfTracks();
   
 
   Int_t nTracks = fESD->GetNumberOfTracks();
   
+  Int_t nSkippedSeeds = 0;
+  
   // loop over esd tracks
   for (Int_t t=0; t<nTracks; t++)
   {
   // loop over esd tracks
   for (Int_t t=0; t<nTracks; t++)
   {
@@ -152,7 +147,8 @@ Bool_t AliROCESDAnalysisSelector::Process(Long64_t entry)
     const AliTPCseed* seed = dynamic_cast<const AliTPCseed*> (friendtrack->GetCalibObject(0));
     if (!seed)
     {
     const AliTPCseed* seed = dynamic_cast<const AliTPCseed*> (friendtrack->GetCalibObject(0));
     if (!seed)
     {
-      AliDebug(AliLog::kError, Form("ERROR: Could not retrieve seed of track %d.", t));
+      AliDebug(AliLog::kDebug, Form("ERROR: Could not retrieve seed of track %d.", t));
+      nSkippedSeeds++;
       continue;
     }
     
       continue;
     }
     
@@ -167,12 +163,28 @@ Bool_t AliROCESDAnalysisSelector::Process(Long64_t entry)
       
       //AliDebug(AliLog::kDebug, Form("We found a cluster from sector %d", cluster->GetDetector()));
 
       
       //AliDebug(AliLog::kDebug, Form("We found a cluster from sector %d", cluster->GetDetector()));
 
-      if (cluster->GetDetector() != 5)
+      Int_t detector = cluster->GetDetector();
+      
+      if (detector < 0 || detector >= kTPCSectors)
+      {
+        AliDebug(AliLog::kDebug, Form("We found a cluster from invalid sector %d", detector));
         continue;
         continue;
+      }
+      
+      if (!fClusterHistograms[detector])
+      {
+        TString title;
+        title.Form("sector_%d", detector); 
+        // TODO claus will put a nice title here
+        fClusterHistograms[detector] = new AliTPCClusterHistograms(Form("sector_%d", detector), title);
+      }
       
       
-      fClusterHistograms->FillCluster(cluster);
+      fClusterHistograms[detector]->FillCluster(cluster);
     }
   }
     }
   }
+  
+  if (nSkippedSeeds > 0)
+    printf("WARNING: The seed was not found for %d out of %d tracks.\n", nSkippedSeeds, nTracks);
    
   return kTRUE;
 }
    
   return kTRUE;
 }
@@ -181,15 +193,20 @@ void AliROCESDAnalysisSelector::SlaveTerminate()
 {
   //
   
 {
   //
   
-  fOutput->Add(fClusterHistograms);
+  for (Int_t i=0; i<kTPCSectors; i++)
+    if (fClusterHistograms[i])
+        fOutput->Add(fClusterHistograms[i]);
 } 
 
 void AliROCESDAnalysisSelector::Terminate()
 {
 } 
 
 void AliROCESDAnalysisSelector::Terminate()
 {
-  //
+  // TODO read from output list for PROOF
     
   TFile* file = TFile::Open("rocESD.root", "RECREATE");
   
     
   TFile* file = TFile::Open("rocESD.root", "RECREATE");
   
-  fClusterHistograms->SaveHistograms();
+  for (Int_t i=0; i<kTPCSectors; i++)
+    if (fClusterHistograms[i])
+      fClusterHistograms[i]->SaveHistograms();
+
   file->Close();
 } 
   file->Close();
 } 
index 5d549964c584844be43c097fe28f8b892b3bd01a..948d5f358d870ec7177a57a8e49c6ec1eac334b6 100644 (file)
@@ -5,15 +5,17 @@
 
 #include "AliSelector.h"
 
 
 #include "AliSelector.h"
 
-//#include "TPC/AliTPCClusterHistograms.h"
-
 class AliTPCClusterHistograms;
 class AliESDfriend;
 
 class AliTPCClusterHistograms;
 class AliESDfriend;
 
-// this is an empty selector that can be used to create an analysis
+// 
+// TODO explain this
+//
 
 class AliROCESDAnalysisSelector : public AliSelector {
   public:
 
 class AliROCESDAnalysisSelector : public AliSelector {
   public:
+    enum { kTPCSectors = 72 };
+  
     AliROCESDAnalysisSelector();
     virtual ~AliROCESDAnalysisSelector();
 
     AliROCESDAnalysisSelector();
     virtual ~AliROCESDAnalysisSelector();
 
@@ -26,7 +28,7 @@ class AliROCESDAnalysisSelector : public AliSelector {
  protected:
     AliESDfriend* fESDfriend;
 
  protected:
     AliESDfriend* fESDfriend;
 
-    AliTPCClusterHistograms* fClusterHistograms;
+    AliTPCClusterHistograms* fClusterHistograms[kTPCSectors];
 
  private:
     AliROCESDAnalysisSelector(const AliROCESDAnalysisSelector&);
 
  private:
     AliROCESDAnalysisSelector(const AliROCESDAnalysisSelector&);
index 2d35bdcf9681c2d39b88ef674b4182c6d660c8bb..9c6cfe8898645796e252e443f96511815aaccf47 100644 (file)
@@ -44,16 +44,18 @@ AliTPCClusterHistograms::AliTPCClusterHistograms(const Char_t* name, const Char_
 {
   // constructor initializing tnamed
 
 {
   // constructor initializing tnamed
 
+  #define BINNING_Y 100, -50, 50
+
   fhQmaxVsRow  = new TH2F("QmaxVsPadRow", "Qmax vs. pad row;Pad row;Qmax", 91, -0.5, 90.5, 301, -0.5, 300.5);
   fhQtotVsRow  = new TH2F("QtotVsPadRow", "Qtot vs. pad row;Pad row;Qtot", 91, -0.5, 90.5, 100,  0,  1000);
   
   fhSigmaYVsRow = new TH2F("SigmaYVsPadRow", "Sigma Y vs. pad row;Pad row;#sigma_{Y}", 91, -0.5, 90.5, 100,  0,  0.5);
   fhSigmaZVsRow = new TH2F("SigmaZVsPadRow", "Sigma Z vs. pad row;Pad row;#sigma_{Z}", 91, -0.5, 90.5, 100,  0,  0.5);
   
   fhQmaxVsRow  = new TH2F("QmaxVsPadRow", "Qmax vs. pad row;Pad row;Qmax", 91, -0.5, 90.5, 301, -0.5, 300.5);
   fhQtotVsRow  = new TH2F("QtotVsPadRow", "Qtot vs. pad row;Pad row;Qtot", 91, -0.5, 90.5, 100,  0,  1000);
   
   fhSigmaYVsRow = new TH2F("SigmaYVsPadRow", "Sigma Y vs. pad row;Pad row;#sigma_{Y}", 91, -0.5, 90.5, 100,  0,  0.5);
   fhSigmaZVsRow = new TH2F("SigmaZVsPadRow", "Sigma Z vs. pad row;Pad row;#sigma_{Z}", 91, -0.5, 90.5, 100,  0,  0.5);
   
-  fhQmaxProfileYVsRow = new TProfile2D("QmaxMeanYVsPadRow","Mean Qmax, y vs pad row;Pad row;y",91,-0.5,90.5,100,-30,30);
-  fhQtotProfileYVsRow = new TProfile2D("QtotMeanYVsPadRow","Mean Qtot, y vs pad row;Pad row;y",91,-0.5,90.5,100,-30,30);
-  fhSigmaYProfileYVsRow = new TProfile2D("SigmaYMeanYVsPadRow","Mean Sigma y, x vs pad row;Pad row;y",91,-0.5,90.5,100,-30,30);
-  fhSigmaZProfileYVsRow = new TProfile2D("SigmaZMeanYVsPadRow","Mean Sigma y, x vs pad row;Pad row;y",91,-0.5,90.5,100,-30,30);
+  fhQmaxProfileYVsRow = new TProfile2D("QmaxMeanYVsPadRow","Mean Qmax, y vs pad row;Pad row;y",91,-0.5,90.5, BINNING_Y);
+  fhQtotProfileYVsRow = new TProfile2D("QtotMeanYVsPadRow","Mean Qtot, y vs pad row;Pad row;y",91,-0.5,90.5, BINNING_Y);
+  fhSigmaYProfileYVsRow = new TProfile2D("SigmaYMeanYVsPadRow","Mean Sigma y, x vs pad row;Pad row;y",91,-0.5,90.5, BINNING_Y);
+  fhSigmaZProfileYVsRow = new TProfile2D("SigmaZMeanYVsPadRow","Mean Sigma y, x vs pad row;Pad row;y",91,-0.5,90.5, BINNING_Y);
 
 }
 
 
 }