#include "AliTPCRecoParam.h"
#include "AliRawReader.h"
#include "AliTPCRawStream.h"
+#include "AliRawEventHeaderBase.h"
#include "AliRunLoader.h"
#include "AliLoader.h"
#include "Riostream.h"
fZWidth(0),
fPedSubtraction(kFALSE),
fIsOldRCUFormat(kFALSE),
+ fEventHeader(0),
+ fTimeStamp(0),
+ fEventType(0),
fInput(0),
fOutput(0),
fRowCl(0),
AliTPCROC * roc = AliTPCROC::Instance();
AliTPCCalPad * gainTPC = AliTPCcalibDB::Instance()->GetPadGainFactor();
AliTPCRawStream input(rawReader);
+ fEventHeader = (AliRawEventHeaderBase*)rawReader->GetEventHeader();
+ if (fEventHeader){
+ fTimeStamp = fEventHeader->Get("Timestamp");
+ fEventType = fEventHeader->Get("Type");
+ }
+
Int_t nclusters = 0;
Float_t *p = &allBins[iRow][iPad*fMaxTime+3];
//Float_t pedestal = TMath::Median(fMaxTime, p);
Int_t id[3] = {fSector, iRow, iPad-3};
- Float_t pedestal = ProcesSignal(p, fMaxTime, id);
+ Double_t rms=0;
+ Float_t pedestal = ProcesSignal(p, fMaxTime, id, rms);
for (Int_t iTimeBin = 0; iTimeBin < fMaxTime; iTimeBin++) {
allBins[iRow][iPad*fMaxTime+iTimeBin] -= pedestal;
if (iTimeBin < AliTPCReconstructor::GetRecoParam()->GetFirstBin())
allBins[iRow][iPad*fMaxTime+iTimeBin] = 0;
if (allBins[iRow][iPad*fMaxTime+iTimeBin] < zeroSup)
allBins[iRow][iPad*fMaxTime+iTimeBin] = 0;
+ if (allBins[iRow][iPad*fMaxTime+iTimeBin] < 3.0*rms) // 3 sigma cut on RMS
+ allBins[iRow][iPad*fMaxTime+iTimeBin] = 0;
}
}
}
}
-Double_t AliTPCclustererMI::ProcesSignal(Float_t *signal, Int_t nchannels, Int_t id[3]){
+Double_t AliTPCclustererMI::ProcesSignal(Float_t *signal, Int_t nchannels, Int_t id[3], Double_t &rmsOut){
//
// process signal on given pad - + streaming of additional information in special mode
//
rms = TMath::Sqrt(TMath::Abs(rms/count10-mean*mean));
rms06 = TMath::Sqrt(TMath::Abs(rms06/count06-mean06*mean06));
rms09 = TMath::Sqrt(TMath::Abs(rms09/count09-mean09*mean09));
+ rmsOut = rms09;
//
if (AliLog::GetDebugLevel("","AliTPCclustererMI")==0) return median;
//
// Dump mean signal info
//
(*fDebugStreamer)<<"Signal"<<
+ "TimeStamp="<<fTimeStamp<<
+ "EventType="<<fEventType<<
"Sector="<<uid[0]<<
"Row="<<uid[1]<<
"Pad="<<uid[2]<<
graph =new TGraph(nchannels, dtime, dsignal);
if (rms06>2.*fParam->GetZeroSup() || random)
(*fDebugStreamer)<<"SignalN"<< //noise pads - or random sample of pads
+ "TimeStamp="<<fTimeStamp<<
+ "EventType="<<fEventType<<
"Sector="<<uid[0]<<
"Row="<<uid[1]<<
"Pad="<<uid[2]<<
"\n";
if (max-median>kMin &&maxPos>AliTPCReconstructor::GetRecoParam()->GetFirstBin())
(*fDebugStreamer)<<"SignalB"<< // pads with signal
+ "TimeStamp="<<fTimeStamp<<
+ "EventType="<<fEventType<<
"Sector="<<uid[0]<<
"Row="<<uid[1]<<
"Pad="<<uid[2]<<
if (ceQmax&&ceQsum>ceSumThreshold) {
ceTime/=ceQsum;
(*fDebugStreamer)<<"Signalce"<<
+ "TimeStamp="<<fTimeStamp<<
+ "EventType="<<fEventType<<
"Sector="<<uid[0]<<
"Row="<<uid[1]<<
"Pad="<<uid[2]<<
if (ggQmax&&ggQsum>ggSumThreshold) {
ggTime/=ggQsum;
(*fDebugStreamer)<<"Signalgg"<<
+ "TimeStamp="<<fTimeStamp<<
+ "EventType="<<fEventType<<
"Sector="<<uid[0]<<
"Row="<<uid[1]<<
"Pad="<<uid[2]<<
Int_t rpad = pad - (AliTPCROC::Instance()->GetNPads(isector,row))/2;
//
(*fDebugStreamer)<<"Fit"<<
+ "TimeStamp="<<fTimeStamp<<
+ "EventType="<<fEventType<<
"Sector="<<isector<<
"Row="<<row<<
"Pad="<<pad<<
class AliSimDigits;
class TTree;
class TTreeSRedirector;
+class AliRawEventHeaderBase;
class AliTPCclustererMI : public TObject{
public:
void UnfoldCluster(Float_t * matrix[7], Float_t recmatrix[5][5],
Float_t & meani, Float_t & meanj, Float_t & sum, Float_t &overlap );
void FindClusters();
- Double_t ProcesSignal(Float_t * signal, Int_t nchannels, Int_t id[3]);
+ Double_t ProcesSignal(Float_t * signal, Int_t nchannels, Int_t id[3], Double_t &rms);
void DumpHistos();
Bool_t fPedSubtraction; // perform pedestal subtraction or not
Bool_t fIsOldRCUFormat; // assume old RCU raw data format
-
+ AliRawEventHeaderBase *fEventHeader; //! event header information
+ UInt_t fTimeStamp; // Time Stamp
+ UInt_t fEventType; // Event Type
TTree * fInput; //!input tree with digits - object not owner
TTree * fOutput; //!output tree with digits - object not owner
AliTPCClustersRow * fRowCl; //! current cluster row