100 LOG(debug) <<
"CbmMvdSensorClusterfinderTask : Initialisation of sensor " <<
fSensor->GetName();
123 fResolutionHistoX =
new TH1F(
"SinglePointResolution_X",
"SinglePointResolution_X", 10000, -0.0100, 0.0100);
124 fResolutionHistoY =
new TH1F(
"SinglePointResolution_Y",
"SinglePointResolution_Y", 10000, -0.0100, 0.0100);
126 new TH1F(
"SinglePointResolution_X_Clean",
"SinglePointResolution_X_Clean", 10000, -0.0100, 0.0100);
128 new TH1F(
"SinglePointResolution_Y_Clean",
"SinglePointResolution_Y_Clean", 10000, -0.0100, 0.0100);
130 new TH1F(
"SinglePointResolution_X_Merged",
"SinglePointResolution_X_Merged", 10000, -0.0100, 0.0100);
132 new TH1F(
"SinglePointResolution_Y_Merged",
"SinglePointResolution_Y_Merged", 10000, -0.0100, 0.0100);
133 fBadHitHisto =
new TH2F(
"BadHits",
"Hits above 0.003cm", 1000, -2.5, 2.5, 1000, -2.5, 2.5);
134 fFullClusterHisto =
new TH1F(
"ChargeOfAllPixels",
"ChargeOfAllPixels", 12000, 0, 12000);
151 size_t buf_size = 20;
152 char* histoName =
new char[buf_size];
154 for (
Int_t i = 0; i < 49; i++) {
155 snprintf(histoName, buf_size - 1,
"ChargePixel%i", i + 1);
156 histo =
new TH1F(histoName, histoName, 200, 0, 200);
163 char* histoTotalChargeName =
new char[buf_size];
164 TH1F* histoTotalCharge;
165 for (
Int_t i = 0; i < 49; i++) {
167 snprintf(histoTotalChargeName, buf_size - 1,
"totalChargeInNPixels%i", i + 1);
168 histoTotalCharge =
new TH1F(histoTotalChargeName, histoTotalChargeName, 12000, 0, 12000);
171 delete[] histoTotalChargeName;
174 histo =
new TH1F(
"ChargePixelSeed",
"ChargePixelSeed", 200, 0, 14000);
177 histo =
new TH1F(
"ChargePixel9of49",
"ChargePixel 9 Of 49", 200, 0, 14000);
180 histo =
new TH1F(
"ChargePixel25of49",
"ChargePixel 25 Of 49", 200, 0, 14000);
183 histo =
new TH1F(
"ChargePixel49of49",
"ChargePixel 49 Of 49", 200, 0, 14000);
186 histo =
new TH1F(
"ChargePixel9of49Sorted",
"ChargePixel 9 Of 49 Sorted", 200, 0, 14000);
189 histo =
new TH1F(
"ChargePixel25of49Sorted",
"ChargePixel 25 Of 49 Sorted", 200, 0, 14000);
192 histo =
new TH1F(
"ChargePixel49of49Sorted",
"ChargePixel 49 Of 49 Sorted", 49, 0.5, 49.5);
338 LOG(debug) <<
"CbmMvdSensorClusterfinderTask::Exec - Running Sensor " <<
fSensor->GetName();
339 LOG(debug) <<
"CbmMvdSensorClusterfinderTask::Exec - InputBufferSize " <<
fInputFrameBuffer->GetEntriesFast();
352 LOG(error) <<
"CbmMvdSensorFindHitTask - Fatal: No Digits found in this event.";
366 for (
Int_t k = 0; k < nDigis; k++) {
371 LOG(fatal) <<
"RefID of this digi is -1 this should not happend ";
392 LOG(debug) <<
GetName() <<
": VolumeId " <<
fSensor->GetVolumeId();
398 for (iDigi = 0; iDigi < nDigis; iDigi++) {
400 LOG_IF(debug, iDigi % 10000 == 0) <<
GetName() <<
" Digi:" << iDigi;
416 LOG(debug) <<
"CbmMvdSensorClusterfinderTask: Checking for seed pixels...";
420 clusterArray->clear();
421 clusterArray->push_back(iDigi);
434 for (ULong64_t iCluster = 0; iCluster < clusterArray->size(); iCluster++) {
436 LOG(debug) <<
" CbmMvdSensorClusterfinderTask: Calling method CheckForNeighbours()...";
446 pair<Int_t, Int_t> pixelCoords;
447 Int_t clusterSize = clusterArray->size();
456 for (i = 0; i < clusterSize; i++) {
465 pixelCharge = digiInCluster->
GetCharge();
480 clusterArray->clear();
502 pair<Int_t, Int_t> a(channelX, channelY);
506 a = std::make_pair(channelX + 1, channelY);
513 clusterArray->push_back(i);
515 pixelUsed->AddAt(1, i);
519 a = std::make_pair(channelX - 1, channelY);
526 clusterArray->push_back(i);
527 pixelUsed->AddAt(1, i);
531 a = std::make_pair(channelX, channelY - 1);
537 clusterArray->push_back(i);
538 pixelUsed->AddAt(1, i);
542 a = std::make_pair(channelX, channelY + 1);
549 clusterArray->push_back(i);
550 pixelUsed->AddAt(1, i);
584 Int_t seedIndexX = 0, seedIndexY = 0;
587 std::map<std::pair<Int_t, Int_t>,
Int_t> clusterMap = cluster->
GetPixelMap();
591 chargeArray3D[k][j] = gRandom->Gaus(0,
fSigmaNoise);
594 for (std::map<std::pair<Int_t, Int_t>,
Int_t>::iterator iter = clusterMap.begin(); iter != clusterMap.end(); iter++) {
595 if (iter->second > seedCharge) {
596 seedCharge = iter->second;
597 seedIndexX = iter->first.first;
598 seedIndexY = iter->first.second;
602 for (std::map<std::pair<Int_t, Int_t>,
Int_t>::iterator iter = clusterMap.begin(); iter != clusterMap.end(); iter++) {
604 Int_t relativeX = iter->first.first + seedPixelOffset - seedIndexX;
605 Int_t relativeY = iter->first.second + seedPixelOffset - seedIndexY;
607 if (
fVerbose > 1) LOG(debug) << relativeX <<
" " << relativeY <<
" " << iter->first.first <<
" " << seedIndexX;
610 if (relativeX >= 0 && relativeX < fChargeArraySize && relativeY >= 0 && relativeY <
fChargeArraySize) {
611 chargeArray3D[relativeX][relativeY] = iter->second;
614 if ((relativeX - seedPixelOffset == 0) && (relativeY - seedPixelOffset == 0)) {
619 std::stringstream ss;
622 ss << chargeArray3D[i][j] <<
" ";
626 LOG(info) << ss.str();
636 Int_t qSeed = chargeArray3D[seedPixelOffset][seedPixelOffset];
639 for (
Int_t k = seedPixelOffset - 1; k < seedPixelOffset + 1; k++) {
640 for (
Int_t j = seedPixelOffset - 1; j < seedPixelOffset + 1; j++) {
641 q9 = q9 + chargeArray3D[k][j];
659 for (
Int_t k = seedPixelOffset - 2; k < seedPixelOffset + 2; k++) {
660 for (
Int_t j = seedPixelOffset - 2; j < seedPixelOffset + 2; j++) {
661 q25 = q25 + chargeArray3D[k][j];
666 for (
Int_t k = seedPixelOffset - 3; k < seedPixelOffset + 3; k++) {
667 for (
Int_t j = seedPixelOffset - 3; j < seedPixelOffset + 3; j++) {
668 q49 = q49 + chargeArray3D[k][j];
687 for (
Int_t i = 0; i < 9; i++) {
688 qSort += chargeArray[orderArray[i]];
692 for (
Int_t i = 9; i < 25; i++) {
693 qSort += chargeArray[orderArray[i]];
697 TH1F* histoTotalCharge;
700 qSort += chargeArray[orderArray[i]];
703 histoTotalCharge->Fill(qSort);