1. New RCU format
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 1 Jul 2009 16:49:01 +0000 (16:49 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 1 Jul 2009 16:49:01 +0000 (16:49 +0000)
2. Adding time stamp information
(Jens, Adam)

TPC/AliTPCclusterKr.cxx
TPC/AliTPCclusterKr.h
TPC/AliTPCclustererKr.cxx
TPC/AliTPCclustererKr.h

index 33e0e29..0aaf550 100644 (file)
-/**************************************************************************\r
- * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
- *                                                                        *\r
- * Author: The ALICE Off-line Project.                                    *\r
- * Contributors are mentioned in the code where appropriate.              *\r
- *                                                                        *\r
- * Permission to use, copy, modify and distribute this software and its   *\r
- * documentation strictly for non-commercial purposes is hereby granted   *\r
- * without fee, provided that the above copyright notice appears in all   *\r
- * copies and that both the copyright notice and this permission notice   *\r
- * appear in the supporting documentation. The authors make no claims     *\r
- * about the suitability of this software for any purpose. It is          *\r
- * provided "as is" without express or implied warranty.                  *\r
- **************************************************************************/\r
-\r
-/* $Id: AliTPCclusterKr.cxx,v 1.7 2008/01/22 17:24:53 matyja Exp $ */\r
-\r
-//-----------------------------------------------------------------\r
-//           Implementation of the TPC Kr cluster class\r
-//\r
-// Origin: Adam Matyja, INP PAN, adam.matyja@ifj.edu.pl\r
-//-----------------------------------------------------------------\r
-\r
-#include "AliTPCclusterKr.h"\r
-#include "AliCluster.h"\r
-#include "AliTPCvtpr.h"\r
-#include "TObjArray.h"\r
-//#include "TH1F.h"\r
-#include "TMath.h"\r
-#include "TArrayI.h"\r
-\r
-ClassImp(AliTPCclusterKr)\r
-\r
-\r
-AliTPCclusterKr::AliTPCclusterKr()\r
-:AliCluster(),\r
- fMax(),\r
- fADCcluster(0),\r
- fSec(0),\r
- fNPads(0),\r
- fNRows(0),\r
- fTimebins1D(0),\r
- fPads1D(0),\r
- fPadRMS(0),\r
- fRowRMS(0),\r
- fTimebinRMS(0),\r
- fSize(0),\r
- fCenterX(0),\r
- fCenterY(0),\r
- fCenterT(0),\r
- fCluster(0)\r
-{\r
-//\r
-// default constructor\r
-//\r
-  fCluster=new TObjArray();\r
-}\r
-\r
-AliTPCclusterKr::AliTPCclusterKr(const AliTPCclusterKr &param)\r
-:AliCluster(param),\r
- fMax(),\r
- fADCcluster(0),\r
- fSec(0),\r
- fNPads(0),\r
- fNRows(0),\r
- fTimebins1D(0),\r
- fPads1D(0),\r
- fPadRMS(0),\r
- fRowRMS(0),\r
- fTimebinRMS(0),\r
- fSize(0),\r
- fCenterX(0),\r
- fCenterY(0),\r
- fCenterT(0),\r
- fCluster(0)\r
-{\r
-//\r
-// copy constructor\r
-//\r
-  fADCcluster = param.fADCcluster;\r
-  fSec  = param.fSec ;\r
-  fNPads = param.fNPads;\r
-  fNRows = param.fNRows;\r
-  fMax = param.fMax;\r
-  //  fCluster = param.fCluster;\r
-  fCenterX = param.fCenterX;\r
-  fCenterY = param.fCenterY;\r
-  fCenterT = param.fCenterT;\r
-  fCluster=new TObjArray(*(param.fCluster));\r
-  fSize = param.fSize;\r
-  fTimebins1D = param.fTimebins1D;\r
-  fPads1D = param.fPads1D;\r
-  fPadRMS = param.fPadRMS;\r
-  fRowRMS = param.fRowRMS;\r
-  fTimebinRMS = param.fTimebinRMS;\r
-} \r
-\r
-AliTPCclusterKr &AliTPCclusterKr::operator = (const AliTPCclusterKr & param)\r
-{\r
-  //\r
-  // assignment operator\r
-  // \r
-  (AliCluster&)(*this) = (AliCluster&)param;\r
-  fADCcluster = param.fADCcluster;\r
-  fSec  = param.fSec ;\r
-  fNPads = param.fNPads;\r
-  fNRows = param.fNRows;\r
-  fMax = param.fMax;\r
-  //  fCluster=param.fCluster;\r
-  fCenterX = param.fCenterX;\r
-  fCenterY = param.fCenterY;\r
-  fCenterT = param.fCenterT;\r
-  delete fCluster;\r
-  fCluster=new TObjArray(*(param.fCluster));\r
-  fSize=param.fSize;\r
-  fTimebins1D = param.fTimebins1D;\r
-  fPads1D = param.fPads1D;\r
-  fPadRMS = param.fPadRMS;\r
-  fRowRMS = param.fRowRMS;\r
-  fTimebinRMS = param.fTimebinRMS;\r
-  return (*this);\r
-}\r
-\r
-AliTPCclusterKr::~AliTPCclusterKr()\r
-{\r
-  //\r
-  // destructor\r
-  //\r
-  if(fCluster) {\r
-    fCluster->SetOwner(kTRUE);\r
-    fCluster->Delete();\r
-    delete fCluster;\r
-  }\r
-  fCluster=0;\r
-}\r
-\r
-////____________________________________________________________________________\r
-void AliTPCclusterKr::SetCenter(){\r
-  //\r
-  // calculate geometrical center of the cluster\r
-  //\r
-  Double_t rX=0;\r
-  Double_t rY=0;\r
-  Double_t rT=0;\r
-\r
-  Short_t adc;\r
-  fADCcluster=0;\r
-  for(Int_t iter = 0; iter < fCluster->GetEntriesFast(); ++iter) {\r
-    AliTPCvtpr *iclus=(AliTPCvtpr *)fCluster->At(iter);\r
-\r
-    //for( std::vector<AliTPCvtpr*>::iterator iclus  = fCluster.begin();\r
-    //iclus != fCluster.end(); ++iclus ) {\r
-    adc = (iclus)->GetAdc();\r
-    fADCcluster+=adc;\r
-    rX += ((iclus)->GetX() * adc);\r
-    rY += ((iclus)->GetY() * adc);\r
-    rT += ((iclus)->GetT() * adc);\r
-  }\r
-  fCenterX=rX/fADCcluster;\r
-  fCenterY=rY/fADCcluster;\r
-  fCenterT=rT/fADCcluster;\r
-\r
-  return;\r
-}\r
-\r
-void AliTPCclusterKr::SetPadRMS(){\r
-  //\r
-  // calculate RMS in pad direction\r
-  //\r
-  //  TH1F *histo= new TH1F("","",200,0,200);\r
-  TArrayI *array= new TArrayI(fCluster->GetEntriesFast());\r
-  for(Int_t i=0;i<fCluster->GetEntriesFast();i++)\r
-    {\r
-      array->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetPad(),i);\r
-      //histo->Fill( ((AliTPCvtpr *)(fCluster->At(i)))->GetPad() );\r
-    }\r
-  //  fPadRMS=histo->GetRMS();\r
-  fPadRMS=TMath::RMS(array->GetSize(),array->GetArray());\r
-  //  delete histo;\r
-  delete array;\r
-  return;\r
-}\r
-\r
-void AliTPCclusterKr::SetRowRMS(){\r
-  //\r
-  // calculate RMS in row direction\r
-  //\r
-  TArrayI *array= new TArrayI(fCluster->GetEntriesFast());\r
-  //  TH1F *histo= new TH1F("","",120,0,120);\r
-  for(Int_t i=0;i<fCluster->GetEntriesFast();i++)\r
-    {\r
-      array->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetRow(),i);\r
-      //      histo->Fill( ((AliTPCvtpr *)(fCluster->At(i)))->GetRow() );\r
-    }\r
-  //  fRowRMS=histo->GetRMS();\r
-  fRowRMS=TMath::RMS(array->GetSize(),array->GetArray());\r
-  //  delete histo;\r
-  delete array;\r
-  return;\r
-}\r
-\r
-void AliTPCclusterKr::SetTimebinRMS(){\r
-  //\r
-  // calculate RMS in timebin direction\r
-  //\r
-  TArrayI *array= new TArrayI(fCluster->GetEntriesFast());\r
-  //  TH1F *histo= new TH1F("","",1000,0,1000);\r
-  for(Int_t i=0;i<fCluster->GetEntriesFast();i++)\r
-    {\r
-      array->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetTime(),i);\r
-      //      histo->Fill( ((AliTPCvtpr *)(fCluster->At(i)))->GetTime() );\r
-    }\r
-  fTimebinRMS=TMath::RMS(array->GetSize(),array->GetArray());\r
-  //histo->GetRMS();\r
-  //  delete histo;\r
-  delete array;\r
-  return;\r
-}\r
-\r
-void AliTPCclusterKr::SetRMS(){\r
-  //\r
-  // calculate RMS in pad,row,timebin direction\r
-  //\r
-  TArrayI *arrayPad = new TArrayI(fCluster->GetEntriesFast());\r
-  TArrayI *arrayRow = new TArrayI(fCluster->GetEntriesFast());\r
-  TArrayI *arrayTime= new TArrayI(fCluster->GetEntriesFast());\r
-  //  TH1F *histoPad= new TH1F("p","p",200,0,200);\r
-  //  TH1F *histoRow= new TH1F("r","r",120,0,120);\r
-  //  TH1F *histoTime= new TH1F("t","t",1000,0,1000);\r
-  for(Int_t i=0;i<fCluster->GetEntriesFast();i++)\r
-    {\r
-      arrayPad->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetPad(),i);\r
-      arrayRow->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetRow(),i);\r
-      arrayTime->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetTime(),i);\r
-\r
-      //histoPad->Fill( ((AliTPCvtpr *)(fCluster->At(i)))->GetPad() );\r
-      //histoRow->Fill( ((AliTPCvtpr *)(fCluster->At(i)))->GetRow() );\r
-      //histoTime->Fill( ((AliTPCvtpr *)(fCluster->At(i)))->GetTime() );\r
-    }\r
-  //  fPadRMS=histoPad->GetRMS();\r
-  fPadRMS=TMath::RMS(arrayPad->GetSize(),arrayPad->GetArray());\r
-  fRowRMS=TMath::RMS(arrayRow->GetSize(),arrayRow->GetArray());\r
-    //histoRow->GetRMS();\r
-  fTimebinRMS=TMath::RMS(arrayTime->GetSize(),arrayTime->GetArray());\r
-    //histoTime->GetRMS();\r
-\r
-  delete arrayPad;\r
-  delete arrayRow;\r
-  delete arrayTime;\r
-  //  delete histoPad;\r
-  //  delete histoRow;\r
-  //  delete histoTime;\r
-\r
-  return;\r
-}\r
-\r
-\r
-void AliTPCclusterKr::Set1D(){\r
-  //\r
-  //\r
-  //\r
-  Short_t maxTime=0;\r
-  Short_t minTime=1000;\r
-  Short_t maxPad=0;\r
-  Short_t minPad=1000;\r
\r
-  for(Int_t i=0;i<fCluster->GetEntriesFast();i++)\r
-    {\r
-      if(((AliTPCvtpr *)(fCluster->At(i)))->GetPad()>maxPad)maxPad   =((AliTPCvtpr *)(fCluster->At(i)))->GetPad();\r
-      if(((AliTPCvtpr *)(fCluster->At(i)))->GetPad()<minPad)minPad   =((AliTPCvtpr *)(fCluster->At(i)))->GetPad();\r
-      if(((AliTPCvtpr *)(fCluster->At(i)))->GetTime()>maxTime)maxTime=((AliTPCvtpr *)(fCluster->At(i)))->GetTime();\r
-      if(((AliTPCvtpr *)(fCluster->At(i)))->GetTime()<minTime)minTime=((AliTPCvtpr *)(fCluster->At(i)))->GetTime();\r
-    }\r
-  fPads1D=maxPad-minPad+1;\r
-  fTimebins1D=maxTime-minTime+1;\r
-  return;\r
-}\r
+/**************************************************************************\r\r
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r\r
+ *                                                                        *\r\r
+ * Author: The ALICE Off-line Project.                                    *\r\r
+ * Contributors are mentioned in the code where appropriate.              *\r\r
+ *                                                                        *\r\r
+ * Permission to use, copy, modify and distribute this software and its   *\r\r
+ * documentation strictly for non-commercial purposes is hereby granted   *\r\r
+ * without fee, provided that the above copyright notice appears in all   *\r\r
+ * copies and that both the copyright notice and this permission notice   *\r\r
+ * appear in the supporting documentation. The authors make no claims     *\r\r
+ * about the suitability of this software for any purpose. It is          *\r\r
+ * provided "as is" without express or implied warranty.                  *\r\r
+ **************************************************************************/\r\r
+\r\r
+/* $Id: AliTPCclusterKr.cxx,v 1.7 2008/01/22 17:24:53 matyja Exp $ */\r\r
+\r\r
+//-----------------------------------------------------------------\r\r
+//           Implementation of the TPC Kr cluster class\r\r
+//\r\r
+// Origin: Adam Matyja, INP PAN, adam.matyja@ifj.edu.pl\r\r
+//-----------------------------------------------------------------\r\r
+\r\r
+#include "AliTPCclusterKr.h"\r\r
+#include "AliCluster.h"\r\r
+#include "AliTPCvtpr.h"\r\r
+#include "TObjArray.h"\r\r
+//#include "TH1F.h"\r\r
+#include "TMath.h"\r\r
+#include "TArrayI.h"\r\r
+\r\r
+ClassImp(AliTPCclusterKr)\r\r
+\r\r
+\r\r
+AliTPCclusterKr::AliTPCclusterKr()\r\r
+:AliCluster(),\r\r
+ fMax(),\r\r
+ fADCcluster(0),\r\r
+ fSec(0),\r\r
+ fNPads(0),\r\r
+ fNRows(0),\r\r
+ fTimebins1D(0),\r\r
+ fPads1D(0),\r\r
+ fPadRMS(0),\r\r
+ fRowRMS(0),\r\r
+ fTimebinRMS(0),\r\r
+ fSize(0),\r\r
+ fCenterX(0),\r\r
+ fCenterY(0),\r\r
+ fCenterT(0),\r\r
+ fCluster(0),\r\r
+ fTimeStamp(0)\r\r
+{\r\r
+//\r\r
+// default constructor\r\r
+//\r\r
+  fCluster=new TObjArray();\r\r
+}\r\r
+\r\r
+AliTPCclusterKr::AliTPCclusterKr(const AliTPCclusterKr &param)\r\r
+:AliCluster(param),\r\r
+ fMax(),\r\r
+ fADCcluster(0),\r\r
+ fSec(0),\r\r
+ fNPads(0),\r\r
+ fNRows(0),\r\r
+ fTimebins1D(0),\r\r
+ fPads1D(0),\r\r
+ fPadRMS(0),\r\r
+ fRowRMS(0),\r\r
+ fTimebinRMS(0),\r\r
+ fSize(0),\r\r
+ fCenterX(0),\r\r
+ fCenterY(0),\r\r
+ fCenterT(0),\r\r
+ fCluster(0),\r\r
+ fTimeStamp(0)\r\r
+{\r\r
+//\r\r
+// copy constructor\r\r
+//\r\r
+  fADCcluster = param.fADCcluster;\r\r
+  fSec  = param.fSec ;\r\r
+  fNPads = param.fNPads;\r\r
+  fNRows = param.fNRows;\r\r
+  fMax = param.fMax;\r\r
+  //  fCluster = param.fCluster;\r\r
+  fCenterX = param.fCenterX;\r\r
+  fCenterY = param.fCenterY;\r\r
+  fCenterT = param.fCenterT;\r\r
+  fCluster=new TObjArray(*(param.fCluster));\r\r
+  fSize = param.fSize;\r\r
+  fTimebins1D = param.fTimebins1D;\r\r
+  fPads1D = param.fPads1D;\r\r
+  fPadRMS = param.fPadRMS;\r\r
+  fRowRMS = param.fRowRMS;\r\r
+  fTimebinRMS = param.fTimebinRMS;\r\r
+  fTimeStamp = param.fTimeStamp;\r\r
+} \r\r
+\r\r
+AliTPCclusterKr &AliTPCclusterKr::operator = (const AliTPCclusterKr & param)\r\r
+{\r\r
+  //\r\r
+  // assignment operator\r\r
+  // \r\r
+  (AliCluster&)(*this) = (AliCluster&)param;\r\r
+  fADCcluster = param.fADCcluster;\r\r
+  fSec  = param.fSec ;\r\r
+  fNPads = param.fNPads;\r\r
+  fNRows = param.fNRows;\r\r
+  fMax = param.fMax;\r\r
+  //  fCluster=param.fCluster;\r\r
+  fCenterX = param.fCenterX;\r\r
+  fCenterY = param.fCenterY;\r\r
+  fCenterT = param.fCenterT;\r\r
+  delete fCluster;\r\r
+  fCluster=new TObjArray(*(param.fCluster));\r\r
+  fSize=param.fSize;\r\r
+  fTimebins1D = param.fTimebins1D;\r\r
+  fPads1D = param.fPads1D;\r\r
+  fPadRMS = param.fPadRMS;\r\r
+  fRowRMS = param.fRowRMS;\r\r
+  fTimebinRMS = param.fTimebinRMS;\r\r
+  fTimeStamp = param.fTimeStamp;\r\r
+  return (*this);\r\r
+}\r\r
+\r\r
+AliTPCclusterKr::~AliTPCclusterKr()\r\r
+{\r\r
+  //\r\r
+  // destructor\r\r
+  //\r\r
+  if(fCluster) {\r\r
+    fCluster->SetOwner(kTRUE);\r\r
+    fCluster->Delete();\r\r
+    delete fCluster;\r\r
+  }\r\r
+  fCluster=0;\r\r
+}\r\r
+\r\r
+////____________________________________________________________________________\r\r
+void AliTPCclusterKr::SetCenter(){\r\r
+  //\r\r
+  // calculate geometrical center of the cluster\r\r
+  //\r\r
+  Double_t rX=0;\r\r
+  Double_t rY=0;\r\r
+  Double_t rT=0;\r\r
+\r\r
+  Short_t adc;\r\r
+  fADCcluster=0;\r\r
+  for(Int_t iter = 0; iter < fCluster->GetEntriesFast(); ++iter) {\r\r
+    AliTPCvtpr *iclus=(AliTPCvtpr *)fCluster->At(iter);\r\r
+\r\r
+    //for( std::vector<AliTPCvtpr*>::iterator iclus  = fCluster.begin();\r\r
+    //iclus != fCluster.end(); ++iclus ) {\r\r
+    adc = (iclus)->GetAdc();\r\r
+    fADCcluster+=adc;\r\r
+    rX += ((iclus)->GetX() * adc);\r\r
+    rY += ((iclus)->GetY() * adc);\r\r
+    rT += ((iclus)->GetT() * adc);\r\r
+  }\r\r
+  fCenterX=rX/fADCcluster;\r\r
+  fCenterY=rY/fADCcluster;\r\r
+  fCenterT=rT/fADCcluster;\r\r
+\r\r
+  return;\r\r
+}\r\r
+\r\r
+void AliTPCclusterKr::SetPadRMS(){\r\r
+  //\r\r
+  // calculate RMS in pad direction\r\r
+  //\r\r
+  //  TH1F *histo= new TH1F("","",200,0,200);\r\r
+  TArrayI *array= new TArrayI(fCluster->GetEntriesFast());\r\r
+  for(Int_t i=0;i<fCluster->GetEntriesFast();i++)\r\r
+    {\r\r
+      array->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetPad(),i);\r\r
+      //histo->Fill( ((AliTPCvtpr *)(fCluster->At(i)))->GetPad() );\r\r
+    }\r\r
+  //  fPadRMS=histo->GetRMS();\r\r
+  fPadRMS=TMath::RMS(array->GetSize(),array->GetArray());\r\r
+  //  delete histo;\r\r
+  delete array;\r\r
+  return;\r\r
+}\r\r
+\r\r
+void AliTPCclusterKr::SetRowRMS(){\r\r
+  //\r\r
+  // calculate RMS in row direction\r\r
+  //\r\r
+  TArrayI *array= new TArrayI(fCluster->GetEntriesFast());\r\r
+  //  TH1F *histo= new TH1F("","",120,0,120);\r\r
+  for(Int_t i=0;i<fCluster->GetEntriesFast();i++)\r\r
+    {\r\r
+      array->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetRow(),i);\r\r
+      //      histo->Fill( ((AliTPCvtpr *)(fCluster->At(i)))->GetRow() );\r\r
+    }\r\r
+  //  fRowRMS=histo->GetRMS();\r\r
+  fRowRMS=TMath::RMS(array->GetSize(),array->GetArray());\r\r
+  //  delete histo;\r\r
+  delete array;\r\r
+  return;\r\r
+}\r\r
+\r\r
+void AliTPCclusterKr::SetTimebinRMS(){\r\r
+  //\r\r
+  // calculate RMS in timebin direction\r\r
+  //\r\r
+  TArrayI *array= new TArrayI(fCluster->GetEntriesFast());\r\r
+  //  TH1F *histo= new TH1F("","",1000,0,1000);\r\r
+  for(Int_t i=0;i<fCluster->GetEntriesFast();i++)\r\r
+    {\r\r
+      array->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetTime(),i);\r\r
+      //      histo->Fill( ((AliTPCvtpr *)(fCluster->At(i)))->GetTime() );\r\r
+    }\r\r
+  fTimebinRMS=TMath::RMS(array->GetSize(),array->GetArray());\r\r
+  //histo->GetRMS();\r\r
+  //  delete histo;\r\r
+  delete array;\r\r
+  return;\r\r
+}\r\r
+\r\r
+void AliTPCclusterKr::SetRMS(){\r\r
+  //\r\r
+  // calculate RMS in pad,row,timebin direction\r\r
+  //\r\r
+  TArrayI *arrayPad = new TArrayI(fCluster->GetEntriesFast());\r\r
+  TArrayI *arrayRow = new TArrayI(fCluster->GetEntriesFast());\r\r
+  TArrayI *arrayTime= new TArrayI(fCluster->GetEntriesFast());\r\r
+  //  TH1F *histoPad= new TH1F("p","p",200,0,200);\r\r
+  //  TH1F *histoRow= new TH1F("r","r",120,0,120);\r\r
+  //  TH1F *histoTime= new TH1F("t","t",1000,0,1000);\r\r
+  for(Int_t i=0;i<fCluster->GetEntriesFast();i++)\r\r
+    {\r\r
+      arrayPad->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetPad(),i);\r\r
+      arrayRow->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetRow(),i);\r\r
+      arrayTime->SetAt(((AliTPCvtpr *)(fCluster->At(i)))->GetTime(),i);\r\r
+\r\r
+      //histoPad->Fill( ((AliTPCvtpr *)(fCluster->At(i)))->GetPad() );\r\r
+      //histoRow->Fill( ((AliTPCvtpr *)(fCluster->At(i)))->GetRow() );\r\r
+      //histoTime->Fill( ((AliTPCvtpr *)(fCluster->At(i)))->GetTime() );\r\r
+    }\r\r
+  //  fPadRMS=histoPad->GetRMS();\r\r
+  fPadRMS=TMath::RMS(arrayPad->GetSize(),arrayPad->GetArray());\r\r
+  fRowRMS=TMath::RMS(arrayRow->GetSize(),arrayRow->GetArray());\r\r
+    //histoRow->GetRMS();\r\r
+  fTimebinRMS=TMath::RMS(arrayTime->GetSize(),arrayTime->GetArray());\r\r
+    //histoTime->GetRMS();\r\r
+\r\r
+  delete arrayPad;\r\r
+  delete arrayRow;\r\r
+  delete arrayTime;\r\r
+  //  delete histoPad;\r\r
+  //  delete histoRow;\r\r
+  //  delete histoTime;\r\r
+\r\r
+  return;\r\r
+}\r\r
+\r\r
+\r\r
+void AliTPCclusterKr::Set1D(){\r\r
+  //\r\r
+  //\r\r
+  //\r\r
+  Short_t maxTime=0;\r\r
+  Short_t minTime=1000;\r\r
+  Short_t maxPad=0;\r\r
+  Short_t minPad=1000;\r\r
\r\r
+  for(Int_t i=0;i<fCluster->GetEntriesFast();i++)\r\r
+    {\r\r
+      if(((AliTPCvtpr *)(fCluster->At(i)))->GetPad()>maxPad)maxPad   =((AliTPCvtpr *)(fCluster->At(i)))->GetPad();\r\r
+      if(((AliTPCvtpr *)(fCluster->At(i)))->GetPad()<minPad)minPad   =((AliTPCvtpr *)(fCluster->At(i)))->GetPad();\r\r
+      if(((AliTPCvtpr *)(fCluster->At(i)))->GetTime()>maxTime)maxTime=((AliTPCvtpr *)(fCluster->At(i)))->GetTime();\r\r
+      if(((AliTPCvtpr *)(fCluster->At(i)))->GetTime()<minTime)minTime=((AliTPCvtpr *)(fCluster->At(i)))->GetTime();\r\r
+    }\r\r
+  fPads1D=maxPad-minPad+1;\r\r
+  fTimebins1D=maxTime-minTime+1;\r\r
+  return;\r\r
+}\r\r
index 281ba71..bb45efa 100644 (file)
-#ifndef ALITPCCLUSTERKR_H\r
-#define ALITPCCLUSTERKR_H\r
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
- * See cxx source for full Copyright notice                               */\r
-\r
-/* $Id: AliTPCclusterKr.h,v 1.8 2008/01/22 16:07:15 matyja Exp $ */\r
-\r
-//-------------------------------------------------------\r
-//                    TPC Kr Cluster Class\r
-//\r
-//   Origin: Adam Matyja, INP PAN, adam.matyja@ifj.edu.pl\r
-//-------------------------------------------------------\r
-\r
-#include "AliCluster.h"\r
-#include "TObjArray.h"\r
-#include "AliTPCvtpr.h"\r
-//#include "TH1F.h"\r
-#include "TMath.h"\r
-#include "TArrayI.h"\r
-\r
-//_____________________________________________________________________________\r
-class AliTPCclusterKr: public AliCluster{\r
-public:\r
-  AliTPCclusterKr();\r
-  AliTPCclusterKr(const AliTPCclusterKr & param);//copy constructor\r
-  AliTPCclusterKr &operator = (const AliTPCclusterKr & param); \r
-  virtual ~AliTPCclusterKr();\r
-\r
-  virtual void SetCenter();//set center of the cluster weighted by charge\r
-\r
-  virtual void SetMax(AliTPCvtpr q){fMax=q;}//set values of max. in cluster\r
-  virtual void SetADCcluster(Int_t q){fADCcluster=q;}\r
-  virtual void SetSec(Short_t q){fSec=q;}\r
-  virtual void SetNPads(Short_t q){fNPads=q;}\r
-  virtual void SetNRows(Short_t q){fNRows=q;}\r
-  virtual void SetSize(){fSize=fCluster->GetEntriesFast();}\r
-  virtual void SetCenterX(Double_t q){fCenterX=q;}\r
-  virtual void SetCenterY(Double_t q){fCenterY=q;}\r
-  virtual void SetCenterT(Double_t q){fCenterT=q;}\r
-\r
-  virtual void SetTimebins1D(Short_t q){fTimebins1D=q;}\r
-  virtual void SetPads1D(Short_t q){fPads1D=q;}\r
-  virtual void Set1D();\r
-  virtual void SetPadRMS(Double_t q){fPadRMS=q;}\r
-  virtual void SetRowRMS(Double_t q){fRowRMS=q;}\r
-  virtual void SetTimebinRMS(Double_t q){fTimebinRMS=q;}\r
-  virtual void SetPadRMS();\r
-  virtual void SetRowRMS();\r
-  virtual void SetTimebinRMS();\r
-  virtual void SetRMS();\r
-  //void AddDigitToCluster(AliTPCvtpr *q){fCluster.push_back(q);}\r
-  virtual void AddDigitToCluster(AliTPCvtpr *q){\r
-    fCluster->AddLast(q);\r
-    //fCluster->Compress();\r
-  }\r
-\r
-  AliTPCvtpr GetMax() const {return fMax;}\r
-  Int_t GetADCcluster() const {return  fADCcluster;}\r
-  Short_t GetSec() const {return fSec;}\r
-  Short_t GetNPads() const {return fNPads;}\r
-  Short_t GetNRows() const {return fNRows;}\r
-  Short_t GetSize() const {return fSize;}\r
-\r
-  Short_t GetTimebins1D(){return fTimebins1D;}\r
-  Short_t GetPads1D(){return fPads1D;}\r
-  Double_t GetPadRMS(){return fPadRMS;}\r
-  Double_t GetRowRMS(){return fRowRMS;}\r
-  Double_t GetTimebinRMS(){return fTimebinRMS;}\r
-\r
-  Double_t GetCenterX() const {return fCenterX;}\r
-  Double_t GetCenterY() const {return fCenterY;}\r
-  Double_t GetCenterT() const {return fCenterT;}\r
-  AliTPCvtpr *GetDigitFromCluster(Int_t i) const {return (AliTPCvtpr*)fCluster->At(i);}\r
-\r
-private:\r
-  AliTPCvtpr fMax;//max (ADC,timebin,pad,row) in cluster\r
-  Int_t fADCcluster; //ADC of cluster\r
-  Short_t fSec;  //sector of the cluster\r
-  Short_t fNPads; //number of pads in cluster\r
-  Short_t fNRows; //number of rows in cluster or row max - min\r
-\r
-  Short_t fTimebins1D; //Timebin max - min\r
-  Short_t fPads1D; //Pad max - min\r
-  Double_t fPadRMS; //Pad RMS\r
-  Double_t fRowRMS; //Row RMS\r
-  Double_t fTimebinRMS; //Timebin RMS\r
-\r
-  Short_t fSize; //size of vector\r
-  Double_t fCenterX;// X coordinate of the cluster center in cm\r
-  Double_t fCenterY;// Y coordinate of the cluster center in cm\r
-  Double_t fCenterT;// time coordinate of the cluster center in timebins\r
-  //std::vector< AliTPCvtpr*> fCluster;//cluster contents(adc,nt,np,nr)\r
-  TObjArray *fCluster;//cluster contents(adc,nt,np,nr)\r
-\r
-\r
-  ClassDef(AliTPCclusterKr,5)  // Time Projection Chamber Kr clusters\r
-};\r
-\r
-\r
-#endif\r
-\r
-\r
+#ifndef ALITPCCLUSTERKR_H\r\r
+#define ALITPCCLUSTERKR_H\r\r
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r\r
+ * See cxx source for full Copyright notice                               */\r\r
+\r\r
+/* $Id: AliTPCclusterKr.h,v 1.8 2008/01/22 16:07:15 matyja Exp $ */\r\r
+\r\r
+//-------------------------------------------------------\r\r
+//                    TPC Kr Cluster Class\r\r
+//\r\r
+//   Origin: Adam Matyja, INP PAN, adam.matyja@ifj.edu.pl\r\r
+//-------------------------------------------------------\r\r
+\r\r
+#include "AliCluster.h"\r\r
+#include "TObjArray.h"\r\r
+#include "AliTPCvtpr.h"\r\r
+//#include "TH1F.h"\r\r
+#include "TMath.h"\r\r
+#include "TArrayI.h"\r\r
+\r\r
+//_____________________________________________________________________________\r\r
+class AliTPCclusterKr: public AliCluster{\r\r
+public:\r\r
+  AliTPCclusterKr();\r\r
+  AliTPCclusterKr(const AliTPCclusterKr & param);//copy constructor\r\r
+  AliTPCclusterKr &operator = (const AliTPCclusterKr & param); \r\r
+  virtual ~AliTPCclusterKr();\r\r
+\r\r
+  virtual void SetCenter();//set center of the cluster weighted by charge\r\r
+\r\r
+  virtual void SetMax(AliTPCvtpr q){fMax=q;}//set values of max. in cluster\r\r
+  virtual void SetADCcluster(Int_t q){fADCcluster=q;}\r\r
+  virtual void SetSec(Short_t q){fSec=q;}\r\r
+  virtual void SetNPads(Short_t q){fNPads=q;}\r\r
+  virtual void SetNRows(Short_t q){fNRows=q;}\r\r
+  virtual void SetSize(){fSize=fCluster->GetEntriesFast();}\r\r
+  virtual void SetCenterX(Double_t q){fCenterX=q;}\r\r
+  virtual void SetCenterY(Double_t q){fCenterY=q;}\r\r
+  virtual void SetCenterT(Double_t q){fCenterT=q;}\r\r
+\r\r
+  virtual void SetTimebins1D(Short_t q){fTimebins1D=q;}\r\r
+  virtual void SetPads1D(Short_t q){fPads1D=q;}\r\r
+  virtual void Set1D();\r\r
+  virtual void SetPadRMS(Double_t q){fPadRMS=q;}\r\r
+  virtual void SetRowRMS(Double_t q){fRowRMS=q;}\r\r
+  virtual void SetTimebinRMS(Double_t q){fTimebinRMS=q;}\r\r
+  virtual void SetPadRMS();\r\r
+  virtual void SetRowRMS();\r\r
+  virtual void SetTimebinRMS();\r\r
+  virtual void SetRMS();\r\r
+  virtual void SetTimeStamp(UInt_t timestamp){ fTimeStamp = timestamp; }\r\r
+  //void AddDigitToCluster(AliTPCvtpr *q){fCluster.push_back(q);}\r\r
+  virtual void AddDigitToCluster(AliTPCvtpr *q){\r\r
+    fCluster->AddLast(q);\r\r
+    //fCluster->Compress();\r\r
+  }\r\r
+\r\r
+  AliTPCvtpr GetMax() const {return fMax;}\r\r
+  Int_t GetADCcluster() const {return  fADCcluster;}\r\r
+  Short_t GetSec() const {return fSec;}\r\r
+  Short_t GetNPads() const {return fNPads;}\r\r
+  Short_t GetNRows() const {return fNRows;}\r\r
+  Short_t GetSize() const {return fSize;}\r\r
+\r\r
+  Short_t GetTimebins1D(){return fTimebins1D;}\r\r
+  Short_t GetPads1D(){return fPads1D;}\r\r
+  Double_t GetPadRMS(){return fPadRMS;}\r\r
+  Double_t GetRowRMS(){return fRowRMS;}\r\r
+  Double_t GetTimebinRMS(){return fTimebinRMS;}\r\r
+\r\r
+  Double_t GetCenterX() const {return fCenterX;}\r\r
+  Double_t GetCenterY() const {return fCenterY;}\r\r
+  Double_t GetCenterT() const {return fCenterT;}\r\r
+  AliTPCvtpr *GetDigitFromCluster(Int_t i) const {return (AliTPCvtpr*)fCluster->At(i);}\r\r
+  UInt_t GetTimeStamp() const {return fTimeStamp;}\r\r
+\r\r
+private:\r\r
+  AliTPCvtpr fMax;//max (ADC,timebin,pad,row) in cluster\r\r
+  Int_t fADCcluster; //ADC of cluster\r\r
+  Short_t fSec;  //sector of the cluster\r\r
+  Short_t fNPads; //number of pads in cluster\r\r
+  Short_t fNRows; //number of rows in cluster or row max - min\r\r
+\r\r
+  Short_t fTimebins1D; //Timebin max - min\r\r
+  Short_t fPads1D; //Pad max - min\r\r
+  Double_t fPadRMS; //Pad RMS\r\r
+  Double_t fRowRMS; //Row RMS\r\r
+  Double_t fTimebinRMS; //Timebin RMS\r\r
+\r\r
+  Short_t fSize; //size of vector\r\r
+  Double_t fCenterX;// X coordinate of the cluster center in cm\r\r
+  Double_t fCenterY;// Y coordinate of the cluster center in cm\r\r
+  Double_t fCenterT;// time coordinate of the cluster center in timebins\r\r
+  //std::vector< AliTPCvtpr*> fCluster;//cluster contents(adc,nt,np,nr)\r\r
+  TObjArray *fCluster;//cluster contents(adc,nt,np,nr)\r\r
+  UInt_t fTimeStamp; //time stamp from event header\r\r
+\r\r
+  ClassDef(AliTPCclusterKr,7)  // Time Projection Chamber Kr clusters\r\r
+};\r\r
+\r\r
+\r\r
+#endif\r\r
+\r\r
+\r\r
index 12eb1ba..f40bf38 100644 (file)
@@ -226,10 +226,12 @@ delete stream;
 #include "AliTPCAltroMapping.h"\r
 #include "AliTPCcalibDB.h"\r
 #include "AliTPCRawStream.h"\r
+#include "AliTPCRawStreamV3.h"\r
 #include "AliTPCRecoParam.h"\r
 #include "AliTPCReconstructor.h"\r
 #include "AliRawReader.h"\r
 #include "AliTPCCalROC.h"\r
+#include "AliRawEventHeaderBase.h"\r
 \r
 ClassImp(AliTPCclustererKr)\r
 \r
@@ -260,7 +262,8 @@ AliTPCclustererKr::AliTPCclustererKr()
   fHistoRow(0),\r
   fHistoPad(0),\r
   fHistoTime(0),\r
-  fHistoRowPad(0)\r
+  fHistoRowPad(0),\r
+  fTimeStamp(0)\r
 {\r
 //\r
 // default constructor\r
@@ -293,7 +296,8 @@ AliTPCclustererKr::AliTPCclustererKr(const AliTPCclustererKr &param)
   fHistoRow(0),\r
   fHistoPad(0),\r
   fHistoTime(0),\r
-  fHistoRowPad(0)\r
+  fHistoRowPad(0),\r
+  fTimeStamp(0)\r
 {\r
 //\r
 // copy constructor\r
@@ -323,7 +327,7 @@ AliTPCclustererKr::AliTPCclustererKr(const AliTPCclustererKr &param)
   fHistoPad    = param.fHistoPad  ;\r
   fHistoTime   = param.fHistoTime;\r
   fHistoRowPad = param.fHistoRowPad;\r
-\r
+  fTimeStamp = param.fTimeStamp;\r
 \r
 } \r
 \r
@@ -357,6 +361,7 @@ AliTPCclustererKr & AliTPCclustererKr::operator = (const AliTPCclustererKr & par
   fHistoPad    = param.fHistoPad  ;\r
   fHistoTime   = param.fHistoTime;\r
   fHistoRowPad = param.fHistoRowPad;\r
+  fTimeStamp = param.fTimeStamp;\r
   return (*this);\r
 }\r
 \r
@@ -427,39 +432,219 @@ Int_t AliTPCclustererKr::FinderIO()
   return 0;\r
 }\r
 \r
+\r
+\r
 Int_t AliTPCclustererKr::FinderIO(AliRawReader* rawReader)\r
 {\r
   // Krypton cluster finder for the TPC raw data\r
-  //\r
+  // this method is unsing AliAltroRawStreamV3\r
   // fParam must be defined before\r
-\r
+  \r
   if(rawReader)fRawData=kTRUE; //set flag to data\r
-\r
+  \r
   if (!fOutput) {\r
     Error("Digits2Clusters", "output tree not initialised");\r
     return 11;\r
   }\r
-\r
+  \r
   fParam->SetMaxTBin(fRecoParam->GetLastBin());//set number of timebins from reco -> param\r
   //   used later for memory allocation\r
 \r
-  Bool_t isAltro=kFALSE;\r
+  AliRawEventHeaderBase* eventHeader = (AliRawEventHeaderBase*)rawReader->GetEventHeader();\r
+  if (eventHeader){\r
+    fTimeStamp = eventHeader->Get("Timestamp");\r
+  }\r
 \r
+\r
+  Bool_t isAltro=kFALSE;\r
+  \r
   AliTPCROC * roc = AliTPCROC::Instance();\r
   AliTPCCalPad * noiseTPC = AliTPCcalibDB::Instance()->GetPadNoise();\r
   AliTPCAltroMapping** mapping =AliTPCcalibDB::Instance()->GetMapping();\r
   //\r
-  AliTPCRawStream input(rawReader,(AliAltroMapping**)mapping);\r
-\r
+  AliTPCRawStreamV3 input(rawReader,(AliAltroMapping**)mapping);\r
+  \r
   const Int_t kNIS = fParam->GetNInnerSector();//number of inner sectors\r
   const Int_t kNOS = fParam->GetNOuterSector();//number of outer sectors\r
   const Int_t kNS = kNIS + kNOS;//all sectors\r
+  \r
+  \r
+  //crate TPC view\r
+  AliTPCDigitsArray *digarr=new AliTPCDigitsArray(kFALSE);//data not sim\r
+  digarr->Setup(fParam);//as usually parameters\r
+  \r
+  for(Int_t iSec = 0; iSec < kNS; iSec++) {\r
+    AliTPCCalROC * noiseROC;\r
+    AliTPCCalROC noiseDummy(iSec);\r
+    if(noiseTPC==0x0){\r
+      noiseROC = &noiseDummy;//noise=0\r
+    }else{\r
+      noiseROC = noiseTPC->GetCalROC(iSec);  // noise per given sector\r
+    }\r
+    Int_t nRows = 0; //number of rows in sector\r
+    Int_t nDDLs = 0; //number of DDLs\r
+    Int_t indexDDL = 0; //DDL index\r
+    if (iSec < kNIS) {\r
+      nRows = fParam->GetNRowLow();\r
+      nDDLs = 2;\r
+      indexDDL = iSec * 2;\r
+    }else {\r
+      nRows = fParam->GetNRowUp();\r
+      nDDLs = 4;\r
+      indexDDL = (iSec-kNIS) * 4 + kNIS * 2;\r
+    }\r
+    \r
+    //\r
+    // Load the raw data for corresponding DDLs\r
+    //\r
+    rawReader->Reset();\r
+    rawReader->Select("TPC",indexDDL,indexDDL+nDDLs-1);\r
+      \r
+    \r
+    while (input.NextDDL()){\r
+      // Allocate memory for rows in sector (pads(depends on row) x timebins)\r
+      if (!digarr->GetRow(iSec,0)){\r
+        for(Int_t iRow = 0; iRow < nRows; iRow++) {\r
+          digarr->CreateRow(iSec,iRow);\r
+        }//end loop over rows\r
+      }\r
+      //loop over pads\r
+      while ( input.NextChannel() ) {\r
+        Int_t iRow = input.GetRow();\r
+        Int_t iPad = input.GetPad();\r
+        //check row consistency\r
+        if (iRow < 0 ) continue;\r
+        if (iRow < 0 || iRow >= nRows){\r
+          AliError(Form("Pad-row index (%d) outside the range (%d -> %d) !",\r
+                        iRow, 0, nRows -1));\r
+          continue;\r
+        }\r
+        \r
+      //check pad consistency\r
+        if (iPad < 0 || iPad >= (Int_t)(roc->GetNPads(iSec,iRow))) {\r
+          AliError(Form("Pad index (%d) outside the range (%d -> %d) !",\r
+                        iPad, 0, roc->GetNPads(iSec,iRow) ));\r
+          continue;\r
+        }\r
+        \r
+      //loop over bunches\r
+        while ( input.NextBunch() ){\r
+          Int_t  startTbin    = (Int_t)input.GetStartTimeBin();\r
+          Int_t  bunchlength  = (Int_t)input.GetBunchLength();\r
+          const UShort_t *sig = input.GetSignals();\r
+          isAltro=kTRUE;\r
+          for (Int_t iTime = 0; iTime<bunchlength; iTime++){\r
+            Int_t iTimeBin=startTbin-iTime;\r
+            //\r
+            if(fDebugLevel==72){\r
+              fHistoRow->Fill(iRow);\r
+              fHistoPad->Fill(iPad);\r
+              fHistoTime->Fill(iTimeBin);\r
+              fHistoRowPad->Fill(iPad,iRow);\r
+            }else if(fDebugLevel>=0&&fDebugLevel<72){\r
+              if(iSec==fDebugLevel){\r
+                fHistoRow->Fill(iRow);\r
+                fHistoPad->Fill(iPad);\r
+                fHistoTime->Fill(iTimeBin);\r
+                fHistoRowPad->Fill(iPad,iRow);\r
+              }\r
+            }else if(fDebugLevel==73){\r
+              if(iSec<36){\r
+                fHistoRow->Fill(iRow);\r
+                fHistoPad->Fill(iPad);\r
+                fHistoTime->Fill(iTimeBin);\r
+                fHistoRowPad->Fill(iPad,iRow);\r
+              }\r
+            }else if(fDebugLevel==74){\r
+              if(iSec>=36){\r
+                fHistoRow->Fill(iRow);\r
+                fHistoPad->Fill(iPad);\r
+                fHistoTime->Fill(iTimeBin);\r
+                fHistoRowPad->Fill(iPad,iRow);\r
+              }\r
+            }\r
+            \r
+            //check time consistency\r
+            if ( iTimeBin < fRecoParam->GetFirstBin() || iTimeBin >= fRecoParam->GetLastBin()){\r
+              //cout<<iTimeBin<<endl;\r
+              continue;\r
+              AliFatal(Form("Timebin index (%d) outside the range (%d -> %d) !",\r
+                            iTimeBin, 0, fRecoParam->GetLastBin() -1));\r
+            }\r
+            //signal\r
+            Float_t signal=(Float_t)sig[iTime];\r
+            if (signal <= fZeroSup ||\r
+                iTimeBin < fFirstBin ||\r
+                iTimeBin > fLastBin\r
+               ) {\r
+                 digarr->GetRow(iSec,iRow)->SetDigitFast(0,iTimeBin,iPad);\r
+                 continue;\r
+               }\r
+            if (!noiseROC) continue;\r
+            Double_t noiseOnPad = noiseROC->GetValue(iRow,iPad);//noise on given pad and row in sector\r
+            if (noiseOnPad > fMaxNoiseAbs){\r
+              digarr->GetRow(iSec,iRow)->SetDigitFast(0,iTimeBin,iPad);\r
+              continue; // consider noisy pad as dead\r
+            }\r
+            if(signal <= fMaxNoiseSigma * noiseOnPad){\r
+              digarr->GetRow(iSec,iRow)->SetDigitFast(0,iTimeBin,iPad);\r
+              continue;\r
+            }\r
+            digarr->GetRow(iSec,iRow)->SetDigitFast(TMath::Nint(signal),iTimeBin,iPad);\r
+          }// end loop signals in bunch\r
+        }// end loop bunches\r
+      } // end loop pads\r
+    }// end ddl loop\r
+  }// end sector loop\r
+  SetDigArr(digarr);\r
+  if(isAltro) FindClusterKrIO();\r
+  delete digarr;\r
+  \r
+  return 0;\r
+}\r
 \r
 \r
+\r
+\r
+\r
+Int_t AliTPCclustererKr::FinderIOold(AliRawReader* rawReader)\r
+{\r
+  // Krypton cluster finder for the TPC raw data\r
+  //\r
+  // fParam must be defined before\r
+  \r
+  if(rawReader)fRawData=kTRUE; //set flag to data\r
+  \r
+  if (!fOutput) {\r
+    Error("Digits2Clusters", "output tree not initialised");\r
+    return 11;\r
+  }\r
+  \r
+  fParam->SetMaxTBin(fRecoParam->GetLastBin());//set number of timebins from reco -> param\r
+  //   used later for memory allocation\r
+\r
+  AliRawEventHeaderBase* eventHeader = (AliRawEventHeaderBase*)rawReader->GetEventHeader();\r
+  if (eventHeader){\r
+    fTimeStamp = eventHeader->Get("Timestamp");\r
+  }\r
+  \r
+  Bool_t isAltro=kFALSE;\r
+  \r
+  AliTPCROC * roc = AliTPCROC::Instance();\r
+  AliTPCCalPad * noiseTPC = AliTPCcalibDB::Instance()->GetPadNoise();\r
+  AliTPCAltroMapping** mapping =AliTPCcalibDB::Instance()->GetMapping();\r
+  //\r
+  AliTPCRawStream input(rawReader,(AliAltroMapping**)mapping);\r
+  \r
+  const Int_t kNIS = fParam->GetNInnerSector();//number of inner sectors\r
+  const Int_t kNOS = fParam->GetNOuterSector();//number of outer sectors\r
+  const Int_t kNS = kNIS + kNOS;//all sectors\r
+  \r
+  \r
   //crate TPC view\r
   AliTPCDigitsArray *digarr=new AliTPCDigitsArray(kFALSE);//data not sim\r
   digarr->Setup(fParam);//as usually parameters\r
-\r
+  \r
   //\r
   // Loop over sectors\r
   //\r
@@ -483,23 +668,23 @@ Int_t AliTPCclustererKr::FinderIO(AliRawReader* rawReader)
       nDDLs = 4;\r
       indexDDL = (iSec-kNIS) * 4 + kNIS * 2;\r
     }\r
-\r
+    \r
     //\r
     // Load the raw data for corresponding DDLs\r
     //\r
     rawReader->Reset();\r
     rawReader->Select("TPC",indexDDL,indexDDL+nDDLs-1);\r
-\r
+    \r
     if(input.Next()) {\r
       isAltro=kTRUE;\r
       // Allocate memory for rows in sector (pads(depends on row) x timebins)\r
       for(Int_t iRow = 0; iRow < nRows; iRow++) {\r
-       digarr->CreateRow(iSec,iRow); \r
+        digarr->CreateRow(iSec,iRow);\r
       }//end loop over rows\r
     }\r
     rawReader->Reset();\r
     rawReader->Select("TPC",indexDDL,indexDDL+nDDLs-1);\r
-\r
+    \r
     //\r
     // Begin loop over altro data\r
     //\r
@@ -507,91 +692,91 @@ Int_t AliTPCclustererKr::FinderIO(AliRawReader* rawReader)
       \r
       //check sector consistency\r
       if (input.GetSector() != iSec)\r
-       AliFatal(Form("Sector index mismatch ! Expected (%d), but got (%d) !",iSec,input.GetSector()));\r
+        AliFatal(Form("Sector index mismatch ! Expected (%d), but got (%d) !",iSec,input.GetSector()));\r
       \r
       Int_t iRow = input.GetRow();\r
       Int_t iPad = input.GetPad();\r
       Int_t iTimeBin = input.GetTime();\r
-\r
+      \r
       //\r
       if(fDebugLevel==72){\r
-       fHistoRow->Fill(iRow);\r
-       fHistoPad->Fill(iPad);\r
-       fHistoTime->Fill(iTimeBin);\r
-       fHistoRowPad->Fill(iPad,iRow);\r
+        fHistoRow->Fill(iRow);\r
+        fHistoPad->Fill(iPad);\r
+        fHistoTime->Fill(iTimeBin);\r
+        fHistoRowPad->Fill(iPad,iRow);\r
       }else if(fDebugLevel>=0&&fDebugLevel<72){\r
-       if(iSec==fDebugLevel){\r
-         fHistoRow->Fill(iRow);\r
-         fHistoPad->Fill(iPad);\r
-         fHistoTime->Fill(iTimeBin);\r
-         fHistoRowPad->Fill(iPad,iRow);\r
-       }\r
+        if(iSec==fDebugLevel){\r
+          fHistoRow->Fill(iRow);\r
+          fHistoPad->Fill(iPad);\r
+          fHistoTime->Fill(iTimeBin);\r
+          fHistoRowPad->Fill(iPad,iRow);\r
+        }\r
       }else if(fDebugLevel==73){\r
-       if(iSec<36){\r
-         fHistoRow->Fill(iRow);\r
-         fHistoPad->Fill(iPad);\r
-         fHistoTime->Fill(iTimeBin);\r
-         fHistoRowPad->Fill(iPad,iRow);\r
-       }\r
+        if(iSec<36){\r
+          fHistoRow->Fill(iRow);\r
+          fHistoPad->Fill(iPad);\r
+          fHistoTime->Fill(iTimeBin);\r
+          fHistoRowPad->Fill(iPad,iRow);\r
+        }\r
       }else if(fDebugLevel==74){\r
-       if(iSec>=36){\r
-         fHistoRow->Fill(iRow);\r
-         fHistoPad->Fill(iPad);\r
-         fHistoTime->Fill(iTimeBin);\r
-         fHistoRowPad->Fill(iPad,iRow);\r
-       }\r
+        if(iSec>=36){\r
+          fHistoRow->Fill(iRow);\r
+          fHistoPad->Fill(iPad);\r
+          fHistoTime->Fill(iTimeBin);\r
+          fHistoRowPad->Fill(iPad,iRow);\r
+        }\r
       }\r
-\r
+      \r
       //check row consistency\r
       if (iRow < 0 ) continue;\r
       if (iRow < 0 || iRow >= nRows){\r
-       AliError(Form("Pad-row index (%d) outside the range (%d -> %d) !",\r
-                     iRow, 0, nRows -1));\r
-       continue;\r
+        AliError(Form("Pad-row index (%d) outside the range (%d -> %d) !",\r
+                      iRow, 0, nRows -1));\r
+        continue;\r
       }\r
-\r
+      \r
       //check pad consistency\r
       if (iPad < 0 || iPad >= (Int_t)(roc->GetNPads(iSec,iRow))) {\r
-       AliError(Form("Pad index (%d) outside the range (%d -> %d) !",\r
-                     iPad, 0, roc->GetNPads(iSec,iRow) ));\r
-       continue;\r
+        AliError(Form("Pad index (%d) outside the range (%d -> %d) !",\r
+                      iPad, 0, roc->GetNPads(iSec,iRow) ));\r
+        continue;\r
       }\r
-\r
+      \r
       //check time consistency\r
       if ( iTimeBin < fRecoParam->GetFirstBin() || iTimeBin >= fRecoParam->GetLastBin()){\r
-       //cout<<iTimeBin<<endl;\r
-       continue;\r
-       AliFatal(Form("Timebin index (%d) outside the range (%d -> %d) !",\r
-                     iTimeBin, 0, fRecoParam->GetLastBin() -1));\r
+  //cout<<iTimeBin<<endl;\r
+        continue;\r
+        AliFatal(Form("Timebin index (%d) outside the range (%d -> %d) !",\r
+                      iTimeBin, 0, fRecoParam->GetLastBin() -1));\r
       }\r
-\r
+      \r
       //signal\r
       Int_t signal = input.GetSignal();\r
-      if (signal <= fZeroSup || \r
-         iTimeBin < fFirstBin ||\r
-         iTimeBin > fLastBin\r
-         ) {\r
-       digarr->GetRow(iSec,iRow)->SetDigitFast(0,iTimeBin,iPad);\r
-       continue;\r
-      }\r
+      if (signal <= fZeroSup ||\r
+          iTimeBin < fFirstBin ||\r
+          iTimeBin > fLastBin\r
+         ) {\r
+           digarr->GetRow(iSec,iRow)->SetDigitFast(0,iTimeBin,iPad);\r
+           continue;\r
+         }\r
       if (!noiseROC) continue;\r
       Double_t noiseOnPad = noiseROC->GetValue(iRow,iPad);//noise on given pad and row in sector\r
       if (noiseOnPad > fMaxNoiseAbs){\r
-       digarr->GetRow(iSec,iRow)->SetDigitFast(0,iTimeBin,iPad);\r
-       continue; // consider noisy pad as dead\r
+        digarr->GetRow(iSec,iRow)->SetDigitFast(0,iTimeBin,iPad);\r
+        continue; // consider noisy pad as dead\r
       }\r
       if(signal <= fMaxNoiseSigma * noiseOnPad){\r
-       digarr->GetRow(iSec,iRow)->SetDigitFast(0,iTimeBin,iPad);\r
-       continue;\r
+        digarr->GetRow(iSec,iRow)->SetDigitFast(0,iTimeBin,iPad);\r
+        continue;\r
       }\r
-      digarr->GetRow(iSec,iRow)->SetDigitFast(signal,iTimeBin,iPad);      \r
+      digarr->GetRow(iSec,iRow)->SetDigitFast(signal,iTimeBin,iPad);\r
     }//end of loop over altro data\r
   }//end of loop over sectors\r
   \r
   SetDigArr(digarr);\r
   if(isAltro) FindClusterKrIO();\r
   delete digarr;\r
-\r
+  \r
   return 0;\r
 }\r
 \r
@@ -907,6 +1092,8 @@ void AliTPCclustererKr::MakeClusters(TObjArray * maximaInSector, Int_t iSec, Int
     clusterKr.SetRMS();//Set pad,row,timebin RMS\r
     clusterKr.Set1D();//Set size in pads and timebins\r
 \r
+    clusterKr.SetTimeStamp(fTimeStamp);\r
+\r
     clusterCounter++;\r
     \r
     \r
index 46a01d1..52e7d62 100644 (file)
@@ -3,7 +3,7 @@
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
  * See cxx source for full Copyright notice                               */\r
 \r
-/* $Id: AliTPCclusterKr.h,v 1.8 2008/02/07 16:07:15 matyja Exp $ */\r
+/* $Id: AliTPCclustererKr.h,v 1.8 2008/02/07 16:07:15 matyja Exp $ */\r
 \r
 //-------------------------------------------------------\r
 //                    TPC Kr Clusterer Class\r
@@ -38,6 +38,7 @@ class AliTPCReconstructor;
 class AliRawReader;\r
 class AliTPCCalROC;\r
 class TTreeSRedirector;\r
+class AliRawEventHeaderBase;\r
 //_____________________________________________________________________________\r
 class AliTPCclustererKr: public TObject{\r
 public:\r
@@ -49,6 +50,7 @@ public:
   //finders\r
   virtual Int_t FinderIO();//for MC\r
   virtual Int_t FinderIO(AliRawReader* rawReader);//for data\r
+  virtual Int_t FinderIOold(AliRawReader* rawReader);//for data\r
   virtual Int_t FindClusterKrIO();//main routine for finding clusters\r
   virtual void CleanSector(Int_t sector); // clean isolated digits\r
 \r
@@ -61,7 +63,7 @@ public:
   virtual void SetDigArr(AliTPCDigitsArray *digarr){fDigarr=digarr;}//set current array of digits\r
   virtual void SetRecoParam(AliTPCRecoParam *recoParam=0);//set reconstruction parameters\r
 \r
-\r
+  virtual void SetTimeStamp(UInt_t timestamp){ fTimeStamp = timestamp; }\r
 \r
   //setters for cluster finder parameters\r
   virtual void SetZeroSup(Int_t v){fZeroSup=v;}//set zero suppresion parameter\r
@@ -118,6 +120,8 @@ public:
   TH1F * GetHistoTime(){return fHistoTime;}\r
   TH2F * GetHistoRowPad(){return fHistoRowPad;}\r
 \r
+  UInt_t GetTimeStamp() const {return fTimeStamp;}\r
+\r
 private:\r
   void MakeClusters(TObjArray * maximaInSector, Int_t iSec, Int_t &clusterCounter);\r
   Bool_t fRawData; //flag =0 for MC =1 for real data\r
@@ -156,10 +160,9 @@ private:
   TH1F *fHistoTime;//!debug histo for timebins\r
   TH2F *fHistoRowPad;//!debug histo for rows and pads\r
 \r
-  ClassDef(AliTPCclustererKr,6)  // Time Projection Chamber Kr clusters\r
+  UInt_t fTimeStamp; //!time stamp from event header\r
+  ClassDef(AliTPCclustererKr,7)  // Time Projection Chamber Kr clusters\r
 };\r
 \r
 \r
 #endif\r
-\r
-\r