added stuff
authorekman <ekman@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 9 Nov 2006 13:55:35 +0000 (13:55 +0000)
committerekman <ekman@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 9 Nov 2006 13:55:35 +0000 (13:55 +0000)
PWG0/TPC/AliROCRawAnalysisSelector.cxx
PWG0/TPC/AliROCRawAnalysisSelector.h
PWG0/TPC/AliTPCClusterHistograms.cxx
PWG0/TPC/runROCRawAnalysis.C

index 3470b63..4ce6ef4 100644 (file)
 
 #include <AliLog.h>
 
+#include <AliRawEvent.h>
+#include <AliRawReaderRoot.h>
+#include <AliRawEventHeaderBase.h>
+#include <AliTPCRawStream.h>
+#include <AliTPCParamSR.h>
+
 #include <TFile.h>
 #include <TTree.h>
 #include <TCanvas.h>
+#include <TTimeStamp.h>
 
 
 ClassImp(AliROCRawAnalysisSelector)
 
 AliROCRawAnalysisSelector::AliROCRawAnalysisSelector() :
-  AliSelector()
+  TSelector(),
+  fRawEvent(0),
+  fTree(0)
 {
+  
   //
   // Constructor. Initialization of pointers
   //
   
-  //  for (Int_t i=0; i<kTPCSectors; i++)
-  // fClusterHistograms[i] = 0;
+  AliDebug(AliLog::kInfo, "Constructor....");
 }
 
 AliROCRawAnalysisSelector::~AliROCRawAnalysisSelector()
@@ -49,10 +58,15 @@ void AliROCRawAnalysisSelector::SlaveBegin(TTree* tree)
 {
   //
   
-  AliSelector::SlaveBegin(tree);
+  AliDebug(AliLog::kInfo, "SlaveBegin....");
+
+  TSelector::SlaveBegin(tree);
+
+  if (tree != 0)
+    Init(tree);
 } 
 
-void AliROCRawAnalysisSelector::Init(TTree *tree)
+void AliROCRawAnalysisSelector::Init(TTree* tree)
 {
   // The Init() function is called when the selector needs to initialize
   // a new tree or chain. Typically here the branch addresses of the tree
@@ -60,26 +74,129 @@ void AliROCRawAnalysisSelector::Init(TTree *tree)
   // generated code, but the routine can be extended by the user if needed.
   // Init() will be called many times when running with PROOF.
 
-  AliSelector::Init(tree);
+  fTree = tree;
+
+  TSelector::Init(tree);
 
   // Set branch address
-  //if (tree)
-  //  tree->SetBranchAddress("rawevent", &fRawEvent);
-    
+  if (tree) {
+    AliDebug(AliLog::kInfo, "INFO: Tree found");
+
+    tree->SetBranchAddress("rawevent", &fRawEvent);
+  }
+
 }
 
 Bool_t AliROCRawAnalysisSelector::Process(Long64_t entry)
 {
   //
   // Implement your analysis here. Do not forget to call the parent class Process by
-  // if (AliSelector::Process(entry) == kFALSE)
+  // if (TSelector::Process(entry) == kFALSE)
   //   return kFALSE;
   //
 
-  if (AliSelector::Process(entry) == kFALSE)
-    return kFALSE;
+  fTree->GetTree()->GetEntry(entry);
+  
+  AliRawReaderRoot* rawReader        = new AliRawReaderRoot(fRawEvent);
+  AliRawEventHeaderBase* eventHeader = (AliRawEventHeaderBase*)rawReader->GetEventHeader();
+
 
+  if (eventHeader) {
+    eventHeader->Print();
+    
+    UInt_t timeStamp = eventHeader->Get("Timestamp");
+    UInt_t eventType = eventHeader->Get("Type");
+    
+    printf("Time stamp: %s, event type %d\n", TTimeStamp(timeStamp).AsString(), eventType);
+  }           
   
+  AliTPCRawStream* tpcRawStream = new AliTPCRawStream(rawReader);
+     
+  AliTPCParamSR* fParam = new AliTPCParamSR;
+     
+  const Int_t kNIS = fParam->GetNInnerSector();
+  const Int_t kNOS = fParam->GetNOuterSector();
+  const Int_t kNS = kNIS + kNOS;
+  
+  Float_t fSign;
+    
+  // kNS
+  for(Int_t fSector = 0; fSector < kNS; fSector++) {
+    printf("*** Looking at sector %d ***\n", fSector);
+            
+    Int_t nRows = 0;
+    Int_t nDDLs = 0, indexDDL = 0;
+    
+    if (fSector < kNIS) {
+      nRows = fParam->GetNRowLow();
+      fSign = (fSector < kNIS/2) ? 1 : -1;
+      nDDLs = 2;
+      indexDDL = fSector * 2;
+    }
+    else {
+      nRows = fParam->GetNRowUp();
+      fSign = ((fSector-kNIS) < kNOS/2) ? 1 : -1;
+      nDDLs = 4;
+      indexDDL = (fSector-kNIS) * 4 + kNIS * 2;
+    }
+    
+    // Loas the raw data for corresponding DDLs
+    rawReader->Reset();
+    tpcRawStream->SetOldRCUFormat(kTRUE);
+    rawReader->Select("TPC",indexDDL,indexDDL+nDDLs-1);
+    Int_t digCounter=0;
+    // Begin loop over altro data
+    
+    printf("Selected DDLs %d ... %d\n", indexDDL,indexDDL+nDDLs-1);
+    
+//     Int_t count = 0;
+    
+//     // hist for this sector
+//     TString title;
+//     title.Form("sector_%d", fSector);
+//     gROOT->cd();
+//     TH3F* hist = dynamic_cast<TH3F*> (gROOT->FindObject(title)); 
+//     if (!hist)
+//       hist = new TH3F(title, Form("%s;row;pad;time", title.Data()), 90, -0.5, 89.5, 120, -0.5, 119.5, 100, 0, 1200);
+    
+//     title.Form("sector_%d_signal", fSector);
+//     TH1F* signal = dynamic_cast<TH1F*> (gROOT->FindObject(title)); 
+//     if (!signal)
+//       signal = new TH1F(title, title, 200, 0, 2000);
+//     //TProfile3D* hist = new TProfile3D(title, title, 90, -0.5, 89.5, 200, -0.5, 199.5, 100, 0, 1500); 
+    
+//     while (tpcRawStream->Next())
+//       {
+//     if (tpcRawStream->GetSector() != fSector)
+//       {
+//         printf("Sector index mismatch ! Expected (%d), but got (%d) !\n",fSector,tpcRawStream->GetSector());
+//         return;
+//       }
+       
+       
+//     if ((count++ % 100000) == 0)
+//       printf("Found %d. digit in sector %d: row %d, pad %d, time %d, signal %d\n", count, tpcRawStream->GetSector(), tpcRawStream->GetRow(), tpcRawStream->GetPad(), tpcRawStream->GetTime(), tpcRawStream->GetSignal());
+       
+//     if (tpcRawStream->GetSignal() > 200)
+//       hist->Fill(tpcRawStream->GetRow(), tpcRawStream->GetPad(), tpcRawStream->GetTime(), tpcRawStream->GetSignal());
+//     signal->Fill(tpcRawStream->GetSignal());
+//     //if (++count == 2)
+//     //    break;
+//       }
+    
+//     if (count > 0 && event == Nevents-1)
+//       {
+//     TCanvas* canvas = new TCanvas(hist->GetName(), hist->GetName(), 900, 450);
+//     canvas->Divide(2, 1);
+//     canvas->cd(1);
+//     hist->Draw();
+//     canvas->cd(2);
+//     signal->Draw();
+//       }    
+//     //else
+//     //    delete hist;
+    
+  }
    
   return kTRUE;
 }
@@ -87,6 +204,7 @@ Bool_t AliROCRawAnalysisSelector::Process(Long64_t entry)
 void AliROCRawAnalysisSelector::SlaveTerminate()
 {
   //
+  AliDebug(AliLog::kInfo, "SlaveTerminate....");
   
   //for (Int_t i=0; i<kTPCSectors; i++)
   // if (fClusterHistograms[i])
@@ -95,6 +213,8 @@ void AliROCRawAnalysisSelector::SlaveTerminate()
 
 void AliROCRawAnalysisSelector::Terminate()
 {
+  AliDebug(AliLog::kInfo, "Terminate....");
+
   // TODO read from output list for PROOF
     
   TFile* file = TFile::Open("rocRaw.root", "RECREATE");
index f2e6d4a..b70f4c8 100644 (file)
@@ -3,19 +3,22 @@
 #ifndef AliROCRawAnalysisSelector_H
 #define AliROCRawAnalysisSelector_H
 
-#include "AliSelector.h"
-
+#include "TSelector.h"
 
 // 
 // TODO explain this
 //
 
-class AliROCRawAnalysisSelector : public AliSelector {
+class AliRawEvent;
+class TTree;
+
+class AliROCRawAnalysisSelector : public TSelector {
   public:
   
     AliROCRawAnalysisSelector();
     virtual ~AliROCRawAnalysisSelector();
 
+    virtual Int_t   Version() const {return 1;}
     virtual void    SlaveBegin(TTree* tree);
     virtual void    Init(TTree *tree);
     virtual Bool_t  Process(Long64_t entry);
@@ -23,8 +26,9 @@ class AliROCRawAnalysisSelector : public AliSelector {
     virtual void    Terminate();
 
  protected:
-
     
+    AliRawEvent* fRawEvent;
+    TTree*       fTree;
 
  private:
     AliROCRawAnalysisSelector(const AliROCRawAnalysisSelector&);
index c90cc38..8b717dc 100644 (file)
@@ -1,5 +1,15 @@
 /* $Id$ */
 
+// This class contains a number of histograms for diagnostics of a TPC
+// read out chamber from the reconstructed clusters.
+//
+// TODO:
+//  
+//
+//
+
+#include "AliTPCClusterHistograms.h"
+
 #include <TStyle.h>
 #include <TFile.h>
 #include <TCanvas.h>
@@ -7,12 +17,9 @@
 #include <TProfile2D.h>
 #include <TLatex.h>
 
-
 #include <../TPC/AliTPCclusterMI.h>
-
 #include <AliLog.h>
 
-#include "AliTPCClusterHistograms.h"
 
 //____________________________________________________________________
 ClassImp(AliTPCClusterHistograms)
@@ -58,9 +65,8 @@ AliTPCClusterHistograms::AliTPCClusterHistograms(Int_t detector, const Char_t* c
   fhQmaxVsTime(0)
 {
   // constructor 
-
+  
   // make name and title
-
   if (detector < 0 || detector >= 72) {
     AliDebug(AliLog::kError, Form("Detector %d does not exist", detector));
     return;
@@ -101,6 +107,7 @@ AliTPCClusterHistograms::AliTPCClusterHistograms(Int_t detector, const Char_t* c
   // 1 bin for each 0.5 cm
   Int_t nBinsY = Int_t(4*yRange);
 
+  //defining histograms and profile plots
   fhQmaxVsRow  = new TH2F("QmaxVsPadRow", "Qmax vs. pad row;Pad row;Qmax", nPadRows+2, -1.5, nPadRows+0.5, 301, -0.5, 300.5);
   fhQtotVsRow  = new TH2F("QtotVsPadRow", "Qtot vs. pad row;Pad row;Qtot", nPadRows+2, -1.5, nPadRows+0.5, 400,  0,  4000);
   
@@ -315,7 +322,7 @@ Long64_t AliTPCClusterHistograms::Merge(TCollection* list)
 //____________________________________________________________________
 void AliTPCClusterHistograms::FillCluster(AliTPCclusterMI* cluster, Int_t time) {
   //
-  //
+  // Fills the different histograms with the information from the cluster.
   //
 
   Int_t padRow =   cluster->GetRow(); 
@@ -390,6 +397,9 @@ void AliTPCClusterHistograms::SaveHistograms()
 
 //____________________________________________________________________
 TCanvas* AliTPCClusterHistograms::DrawHistograms(const Char_t* opt) {
+  //
+  // Draws some histograms and save the canvas as eps and gif file.
+  //  
 
   TCanvas* c = new TCanvas(Form("plots_%s",fName.Data()), fName.Data(), 1200, 1000);
 
index c93a410..f55af62 100644 (file)
@@ -7,7 +7,7 @@
 #include "../CreateESDChain.C"
 #include "../PWG0Helper.C"
 
-void runROCESDAnalysis(Char_t* dataDir, Int_t nRuns=20, Int_t offset=0, Bool_t aDebug = kFALSE, Bool_t aProof = kFALSE, 
+void runROCRawAnalysis(Char_t* dataDir, Int_t nRuns=20, Int_t offset=0, Bool_t aDebug = kFALSE, Bool_t aProof = kFALSE, 
     const char* option = "", const char* proofServer = "jgrosseo@lxb6046")
 {
   if (aProof)
@@ -21,9 +21,11 @@ void runROCESDAnalysis(Char_t* dataDir, Int_t nRuns=20, Int_t offset=0, Bool_t a
 
   TChain* chain = CreateRawChain(dataDir, nRuns);
   
+  cout << "Entries in chain " << chain->GetEntries() << endl;
+
   TList inputList;
   
-  TString selectorName = "AliROCESDAnalysisSelector";
+  TString selectorName = "AliROCRawAnalysisSelector";
   AliLog::SetClassDebugLevel(selectorName, AliLog::kInfo);
 
   if (aDebug != kFALSE)