-/**************************************************************************\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 ¶m)\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 ¶m)\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
-#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
#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
fHistoRow(0),\r
fHistoPad(0),\r
fHistoTime(0),\r
- fHistoRowPad(0)\r
+ fHistoRowPad(0),\r
+ fTimeStamp(0)\r
{\r
//\r
// default constructor\r
fHistoRow(0),\r
fHistoPad(0),\r
fHistoTime(0),\r
- fHistoRowPad(0)\r
+ fHistoRowPad(0),\r
+ fTimeStamp(0)\r
{\r
//\r
// copy constructor\r
fHistoPad = param.fHistoPad ;\r
fHistoTime = param.fHistoTime;\r
fHistoRowPad = param.fHistoRowPad;\r
-\r
+ fTimeStamp = param.fTimeStamp;\r
\r
} \r
\r
fHistoPad = param.fHistoPad ;\r
fHistoTime = param.fHistoTime;\r
fHistoRowPad = param.fHistoRowPad;\r
+ fTimeStamp = param.fTimeStamp;\r
return (*this);\r
}\r
\r
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
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
\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
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
/* 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
class AliRawReader;\r
class AliTPCCalROC;\r
class TTreeSRedirector;\r
+class AliRawEventHeaderBase;\r
//_____________________________________________________________________________\r
class AliTPCclustererKr: public TObject{\r
public:\r
//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
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
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
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