git://git.uio.no
/
u
/
mrichter
/
AliRoot.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
d65adc4
)
Support for automatic pedestal estimation per pad (Marian and Matevz).
author
mtadel
<mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 19 May 2006 13:52:18 +0000
(13:52 +0000)
committer
mtadel
<mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 19 May 2006 13:52:18 +0000
(13:52 +0000)
EVE/Alieve/TPCData.cxx
patch
|
blob
|
blame
|
history
EVE/Alieve/TPCData.h
patch
|
blob
|
blame
|
history
EVE/Alieve/TPCSectorData.cxx
patch
|
blob
|
blame
|
history
EVE/Alieve/TPCSectorData.h
patch
|
blob
|
blame
|
history
EVE/test-macros/tpc_sector_raw_test.C
patch
|
blob
|
blame
|
history
diff --git
a/EVE/Alieve/TPCData.cxx
b/EVE/Alieve/TPCData.cxx
index 77ad4b79e57777482751941a7cb3af7eacca7b66..c17b8b899c9d32888cf0ef82e8cfca97b04da9b0 100644
(file)
--- a/
EVE/Alieve/TPCData.cxx
+++ b/
EVE/Alieve/TPCData.cxx
@@
-28,7
+28,7
@@
ClassImp(TPCData)
TPCData::TPCData() :
fSectors(36), fSectorBlockSize(65536),
TPCData::TPCData() :
fSectors(36), fSectorBlockSize(65536),
- fLoadThreshold(0), fLoadPedestal(0)
+ fLoadThreshold(0), fLoadPedestal(0)
, fAutoPedestal(kFALSE)
{
TPCSectorData::InitStatics();
}
{
TPCSectorData::InitStatics();
}
@@
-101,7
+101,7
@@
void TPCData::LoadDigits(TTree* tree, Bool_t spawnSectors)
if(pad != curPad) {
if(inFill)
if(pad != curPad) {
if(inFill)
- secData->EndPad();
+ secData->EndPad(
fAutoPedestal, fLoadThreshold
);
secData->BeginPad(row, pad, kFALSE);
curPad = pad;
inFill = kTRUE;
secData->BeginPad(row, pad, kFALSE);
curPad = pad;
inFill = kTRUE;
@@
-111,7
+111,7
@@
void TPCData::LoadDigits(TTree* tree, Bool_t spawnSectors)
} while (digit.Next());
if(inFill) {
} while (digit.Next());
if(inFill) {
- secData->EndPad();
+ secData->EndPad(
fAutoPedestal, fLoadThreshold
);
inFill = kFALSE;
}
}
inFill = kFALSE;
}
}
@@
-124,14
+124,15
@@
void TPCData::LoadRaw(AliTPCRawStream& input, Bool_t spawnSectors)
// via CreateSector() are loaded.
// If spawnSectors is true sectors are created if data for them is encountered.
// via CreateSector() are loaded.
// If spawnSectors is true sectors are created if data for them is encountered.
- Int_t sector = -1, row = -1, pad = -1, rowOffset = 0;
- Bool_t inFill = kFALSE;
+ Int_t sector = -1, row = -1, pad = -1, rowOffset = 0;
+ Short_t time, signal;
+ Bool_t inFill = kFALSE;
TPCSectorData* secData = 0;
while (input.Next()) {
if (input.IsNewSector()) {
if(inFill) {
TPCSectorData* secData = 0;
while (input.Next()) {
if (input.IsNewSector()) {
if(inFill) {
- secData->EndPad();
+ secData->EndPad(
fAutoPedestal, fLoadThreshold
);
inFill = kFALSE;
}
sector = input.GetSector();
inFill = kFALSE;
}
sector = input.GetSector();
@@
-148,7
+149,7
@@
void TPCData::LoadRaw(AliTPCRawStream& input, Bool_t spawnSectors)
if (input.IsNewPad()) {
if(inFill) {
if (input.IsNewPad()) {
if(inFill) {
- secData->EndPad();
+ secData->EndPad(
fAutoPedestal, fLoadThreshold
);
inFill = kFALSE;
}
row = input.GetRow() + rowOffset;
inFill = kFALSE;
}
row = input.GetRow() + rowOffset;
@@
-158,12
+159,18
@@
void TPCData::LoadRaw(AliTPCRawStream& input, Bool_t spawnSectors)
inFill = kTRUE;
}
inFill = kTRUE;
}
- if(input.GetSignal() > fLoadThreshold)
- secData->RegisterData(input.GetTime(), input.GetSignal() - fLoadPedestal);
+ time = input.GetTime();
+ signal = input.GetSignal();
+ if(fAutoPedestal) {
+ secData->RegisterData(time, signal);
+ } else {
+ if(signal > fLoadThreshold)
+ secData->RegisterData(time, signal - fLoadPedestal);
+ }
}
if(inFill) {
}
if(inFill) {
- secData->EndPad();
+ secData->EndPad(
fAutoPedestal, fLoadThreshold
);
inFill = kFALSE;
}
}
inFill = kFALSE;
}
}
@@
-177,14
+184,15
@@
void TPCData::LoadRaw(AliTPCRawStreamOld& input, Bool_t spawnSectors, Bool_t war
static const Exc_t eH("TPCData::LoadRaw ");
static const Exc_t eH("TPCData::LoadRaw ");
- Int_t sector = -1, row = -1, pad = -1, rowOffset = 0;
- Bool_t inFill = kFALSE;
+ Int_t sector = -1, row = -1, pad = -1, rowOffset = 0;
+ Short_t time, signal;
+ Bool_t inFill = kFALSE;
TPCSectorData* secData = 0;
while (input.Next()) {
if (input.IsNewSector()) {
if(inFill) {
TPCSectorData* secData = 0;
while (input.Next()) {
if (input.IsNewSector()) {
if(inFill) {
- secData->EndPad();
+ secData->EndPad(
fAutoPedestal, fLoadThreshold
);
inFill = kFALSE;
}
sector = input.GetSector();
inFill = kFALSE;
}
sector = input.GetSector();
@@
-201,7
+209,7
@@
void TPCData::LoadRaw(AliTPCRawStreamOld& input, Bool_t spawnSectors, Bool_t war
if (input.IsNewPad()) {
if(inFill) {
if (input.IsNewPad()) {
if(inFill) {
- secData->EndPad();
+ secData->EndPad(
fAutoPedestal, fLoadThreshold
);
inFill = kFALSE;
}
row = input.GetRow() + rowOffset;
inFill = kFALSE;
}
row = input.GetRow() + rowOffset;
@@
-219,12
+227,18
@@
void TPCData::LoadRaw(AliTPCRawStreamOld& input, Bool_t spawnSectors, Bool_t war
inFill = kTRUE;
}
inFill = kTRUE;
}
- if(input.GetSignal() > fLoadThreshold)
- secData->RegisterData(input.GetTime(), input.GetSignal() - fLoadPedestal);
+ time = input.GetTime();
+ signal = input.GetSignal();
+ if(fAutoPedestal) {
+ secData->RegisterData(time, signal);
+ } else {
+ if(signal > fLoadThreshold)
+ secData->RegisterData(time, signal - fLoadPedestal);
+ }
}
if(inFill) {
}
if(inFill) {
- secData->EndPad();
+ secData->EndPad(
fAutoPedestal, fLoadThreshold
);
inFill = kFALSE;
}
}
inFill = kFALSE;
}
}
diff --git
a/EVE/Alieve/TPCData.h
b/EVE/Alieve/TPCData.h
index dafaf6245478ec8d1d77c94ac254a495fb9ac063..26b7372715ecc8be0fb6263a4634396cd4799161 100644
(file)
--- a/
EVE/Alieve/TPCData.h
+++ b/
EVE/Alieve/TPCData.h
@@
-24,6
+24,7
@@
protected:
Int_t fSectorBlockSize;
Short_t fLoadThreshold;
Short_t fLoadPedestal;
Int_t fSectorBlockSize;
Short_t fLoadThreshold;
Short_t fLoadPedestal;
+ Bool_t fAutoPedestal;
public:
TPCData();
public:
TPCData();
@@
-43,6
+44,9
@@
public:
Short_t GetLoadPedestal() const { return fLoadPedestal; }
void SetLoadPedestal(Short_t lp) { fLoadPedestal = lp; }
Short_t GetLoadPedestal() const { return fLoadPedestal; }
void SetLoadPedestal(Short_t lp) { fLoadPedestal = lp; }
+ Bool_t GetAutoPedestal() const { return fAutoPedestal; }
+ void SetAutoPedestal(Bool_t ap) { fAutoPedestal = ap; }
+
void LoadDigits(TTree* tree, Bool_t spawnSectors=kTRUE);
void LoadRaw(AliTPCRawStream& input, Bool_t spawnSectors=kTRUE);
void LoadRaw(AliTPCRawStreamOld& input, Bool_t spawnSectors=kTRUE, Bool_t warn=kFALSE);
void LoadDigits(TTree* tree, Bool_t spawnSectors=kTRUE);
void LoadRaw(AliTPCRawStream& input, Bool_t spawnSectors=kTRUE);
void LoadRaw(AliTPCRawStreamOld& input, Bool_t spawnSectors=kTRUE, Bool_t warn=kFALSE);
diff --git
a/EVE/Alieve/TPCSectorData.cxx
b/EVE/Alieve/TPCSectorData.cxx
index 454d5d886a34ef22fda53eff8a4d26471ec5ec87..4bff842117a6991959ab44ee1e42f7f491630eec 100644
(file)
--- a/
EVE/Alieve/TPCSectorData.cxx
+++ b/
EVE/Alieve/TPCSectorData.cxx
@@
-193,7
+193,7
@@
void TPCSectorData::BeginPad(Int_t row, Int_t pad, Bool_t reverseTime)
}
}
}
}
-void TPCSectorData::EndPad()
+void TPCSectorData::EndPad(
Bool_t autoPedestal, Short_t threshold
)
{
Short_t *beg, *end;
if(fCurrentStep > 0) {
{
Short_t *beg, *end;
if(fCurrentStep > 0) {
@@
-203,6
+203,34
@@
void TPCSectorData::EndPad()
beg = fPadBuffer + fCurrentPos + 2;
end = fPadBuffer + 2048;
}
beg = fPadBuffer + fCurrentPos + 2;
end = fPadBuffer + 2048;
}
+
+ if(autoPedestal) {
+ Short_t array[1024];
+ Short_t* val;
+ val = beg + 1;
+ while(val <= end) {
+ array[(val-beg)/2] = *val;
+ val += 2;
+ }
+ Short_t pedestal = TMath::Nint(TMath::Median((end-beg)/2, array));
+ val = beg + 1;
+ while(val <= end) {
+ *val -= pedestal;
+ val += 2;
+ }
+ Short_t* wpos = beg;
+ Short_t* rpos = beg;
+ while(rpos < end) {
+ if(rpos[1] > threshold) {
+ wpos[0] = rpos[0];
+ wpos[1] = rpos[1];
+ wpos += 2;
+ }
+ rpos += 2;
+ }
+ end = wpos;
+ }
+
Short_t* wpos = beg;
Short_t* rpos = beg;
Short_t* wpos = beg;
Short_t* rpos = beg;
diff --git
a/EVE/Alieve/TPCSectorData.h
b/EVE/Alieve/TPCSectorData.h
index f162bbd8a721e9419f8d781e6ae39c751ff67a57..d43b1de61dfe7c0560d536c38d895fbbc19a0fdb 100644
(file)
--- a/
EVE/Alieve/TPCSectorData.h
+++ b/
EVE/Alieve/TPCSectorData.h
@@
-153,7
+153,7
@@
public:
void BeginPad(Int_t row, Int_t pad, Bool_t reverseTime=kFALSE);
void RegisterData(Short_t time, Short_t signal);
void BeginPad(Int_t row, Int_t pad, Bool_t reverseTime=kFALSE);
void RegisterData(Short_t time, Short_t signal);
- void EndPad();
+ void EndPad(
Bool_t autoPedestal=kFALSE, Short_t threshold=0
);
const PadData& GetPadData(Int_t padAddr);
const PadData& GetPadData(Int_t row, Int_t pad);
const PadData& GetPadData(Int_t padAddr);
const PadData& GetPadData(Int_t row, Int_t pad);
diff --git
a/EVE/test-macros/tpc_sector_raw_test.C
b/EVE/test-macros/tpc_sector_raw_test.C
index bd6e434559db00cada7d4a3ff78a09dfcfa52d10..147fabea5b8a544d8e0c18e73207a75c713f5294 100644
(file)
--- a/
EVE/test-macros/tpc_sector_raw_test.C
+++ b/
EVE/test-macros/tpc_sector_raw_test.C
@@
-22,9
+22,10
@@
void tpc_sector_raw_test(const char *file = "",Int_t ievent = 0)
x = new Alieve::TPCData;
//x->SetSectorBlockSize(8192);
x = new Alieve::TPCData;
//x->SetSectorBlockSize(8192);
- x->SetLoadThreshold(65);
- x->CreateAllSectors();
- x->LoadRaw(input, kFALSE);
+ x->SetAutoPedestal(kTRUE);
+ x->SetLoadThreshold(3);
+ //x->CreateAllSectors();
+ x->LoadRaw(input, kTRUE);
gStyle->SetPalette(1, 0);
gStyle->SetPalette(1, 0);