Skip to content

Commit

Permalink
Udate califa classes cal2hit
Browse files Browse the repository at this point in the history
Minor change

Added missing kLOSPoint to R3BDetectorList.h

Solved some problems with sci2 and los detectors
  • Loading branch information
jose-luis-rs authored and kresan committed Jan 21, 2022
1 parent 831dd09 commit e0a0d5c
Show file tree
Hide file tree
Showing 16 changed files with 143 additions and 195 deletions.
69 changes: 16 additions & 53 deletions analysis/online/R3BOnlineSpectraLosVsSci2.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -63,34 +63,7 @@ using namespace std;
#define SPEED_OF_LIGHT_MNS 0.299792458

R3BOnlineSpectraLosVsSci2::R3BOnlineSpectraLosVsSci2()
: FairTask("OnlineSpectraLosVsSci2", 1)
, fTrigger(-1)
, fTpat(-1)
, fClockFreq(5.)
, fNEvents(0)
, fTcalSci2(NULL)
, fHitItemsMus(NULL)
, fFrsDataCA(NULL)
, fToFoffset(0)
, fToFmin(-5000)
, fToFmax(5000)
, fTof2InvV_p0(-7.8)
, fTof2InvV_p1(0.0073)
, fL2(137)
, fPos_p0(-11)
, fPos_p1(54.7)
, fDispersionS2(7000)
, fBrho0_S2toCC(9.458)
, fP0(-2.12371e7)
, fP1(4.9473e7)
, fP2(-2.87635e7)
, fZprimary(50.)
, fZoffset(-1.3)
, fPos2min(-200.)
, fPos2max(200.)
, ZMUSIC_cut(50)
, ZMUSIC_wcut(0.5)
, fOnline(kFALSE)
: R3BOnlineSpectraLosVsSci2("R3BOnlineSpectraLosVsSci2", 1)
{
}

Expand All @@ -102,7 +75,7 @@ R3BOnlineSpectraLosVsSci2::R3BOnlineSpectraLosVsSci2(const char* name, Int_t iVe
, fNEvents(0)
, fTcalSci2(NULL)
, fHitItemsMus(NULL)
, fFrsDataCA(NULL)
//, fFrsDataCA(NULL)
, fToFoffset(0)
, fToFmin(-5000)
, fToFmax(5000)
Expand Down Expand Up @@ -130,10 +103,10 @@ R3BOnlineSpectraLosVsSci2::~R3BOnlineSpectraLosVsSci2()
delete fTcalSci2;
if (fHitItemsMus)
delete fHitItemsMus;
if (fFrsDataCA)
{
delete fFrsDataCA;
}
/* if (fFrsDataCA)
{
delete fFrsDataCA;
}*/
}

InitStatus R3BOnlineSpectraLosVsSci2::Init()
Expand All @@ -142,7 +115,7 @@ InitStatus R3BOnlineSpectraLosVsSci2::Init()
// Initialize random number:
std::srand(std::time(0)); // use current time as seed for random generator

LOG(INFO) << "R3BOnlineSpectraLosVsSci2::Init ";
LOG(INFO) << "R3BOnlineSpectraLosVsSci2::Init()";

// try to get a handle on the EventHeader. EventHeader may not be
// present though and hence may be null. Take care when using.
Expand All @@ -151,9 +124,9 @@ InitStatus R3BOnlineSpectraLosVsSci2::Init()
if (NULL == mgr)
LOG(fatal) << "FairRootManager not found";

header = (R3BEventHeader*)mgr->GetObject("R3BEventHeader");
header = (R3BEventHeader*)mgr->GetObject("EventHeader.");
if (!header)
header = (R3BEventHeader*)mgr->GetObject("EventHeader.");
header = (R3BEventHeader*)mgr->GetObject("R3BEventHeader");

FairRunOnline* run = FairRunOnline::Instance();

Expand Down Expand Up @@ -185,15 +158,15 @@ InitStatus R3BOnlineSpectraLosVsSci2::Init()
LOG(WARNING) << "R3BOnlineSpectraLosVsSci2: MusicHitData not found";

// OUTPUT DATA
fFrsDataCA = new TClonesArray("R3BFrsData", 5);
/*fFrsDataCA = new TClonesArray("R3BFrsData", 5);
if (!fOnline)
{
mgr->Register("FrsData", "Analysis FRS", fFrsDataCA, kTRUE);
}
else
{
mgr->Register("FrsData", "Analysis FRS", fFrsDataCA, kFALSE);
}
}*/

// MAIN FOLDER-ID
TFolder* mainfolId = new TFolder("FRS_ID", "FRS ID info");
Expand Down Expand Up @@ -656,16 +629,6 @@ void R3BOnlineSpectraLosVsSci2::Reset_LosVsSci2_Histo()

void R3BOnlineSpectraLosVsSci2::Exec(Option_t* option)
{
// cout << "fNEvents " << fNEvents << endl;

FairRootManager* mgr = FairRootManager::Instance();
if (NULL == mgr)
{
// FairLogger::GetLogger()->Fatal(MESSAGE_ORIGIN, "FairRootManager not found");
LOG(ERROR) << "FairRootManager not found";
return;
}

double Zmusic = 0., Music_ang = 0.;
if (fHitItemsMus && fHitItemsMus->GetEntriesFast() > 0)
{
Expand Down Expand Up @@ -1330,7 +1293,7 @@ void R3BOnlineSpectraLosVsSci2::Exec(Option_t* option)
fh2_AoQ_cut->Fill(AoQ_m1);
fh2_Pos2vsAoQ_m1->Fill(PosCal_m1, AoQ_m1);

AddData(1, 2, zcorang, AoQ_m1, Beta_m1, Brho_m1, PosCal_m1, 0.);
// AddData(1, 2, zcorang, AoQ_m1, Beta_m1, Brho_m1, PosCal_m1, 0.);
}
}
} // for iDet
Expand Down Expand Up @@ -1397,14 +1360,14 @@ void R3BOnlineSpectraLosVsSci2::FinishTask()
fh2_MusZcorvsAng->Write();
fh2_ZvsAoQ_m1->Write();
fh2_ZvsAoQ_m1_cor->Write();
fh2_ZvsAoQ_m1_cor_tpat->Write();
fh2_ZvsAoQ_m1_cor_tpat_los->Write();
fh2_ZvsBeta_m1->Write();
fh2_ZcorvsBeta_m1->Write();
fh2_Pos2vsAoQ_m1->Write();

cout << "FinishTask: All events: " << fNEvents << ", LOS events: " << nLosEvents << endl;
}

/*
// ----- Private method AddData --------------------------------------------
R3BFrsData* R3BOnlineSpectraLosVsSci2::AddData(Int_t StaId,
Int_t StoId,
Expand All @@ -1420,5 +1383,5 @@ R3BFrsData* R3BOnlineSpectraLosVsSci2::AddData(Int_t StaId,
Int_t size = clref.GetEntriesFast();
return new (clref[size]) R3BFrsData(StaId, StoId, z, aq, beta, brho, xs2, xc);
}

ClassImp(R3BOnlineSpectraLosVsSci2)
*/
ClassImp(R3BOnlineSpectraLosVsSci2);
8 changes: 4 additions & 4 deletions analysis/online/R3BOnlineSpectraLosVsSci2.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#include <sstream>
#include <vector>

#include "R3BFrsData.h"
//#include "R3BFrsData.h"
#include "TCanvas.h"
#include "TClonesArray.h"
#include "TH1.h"
Expand Down Expand Up @@ -231,7 +231,7 @@ class R3BOnlineSpectraLosVsSci2 : public FairTask
std::vector<TClonesArray*> fMappedItems;
std::vector<TClonesArray*> fCalItems;
TClonesArray* fHitItemsMus;
TClonesArray* fFrsDataCA; /**< Array with FRS-output data. >*/
// TClonesArray* fFrsDataCA; /**< Array with FRS-output data. >*/

Double_t fPos2min, fPos2max;

Expand Down Expand Up @@ -408,14 +408,14 @@ class R3BOnlineSpectraLosVsSci2 : public FairTask

/** Private method FrsData **/
//** Adds a FrsData to the analysis
R3BFrsData* AddData(Int_t StaId,
/*R3BFrsData* AddData(Int_t StaId,
Int_t StoId,
Double_t z,
Double_t aq,
Double_t betaval,
Double_t brhoval,
Double_t xs2,
Double_t xc);
Double_t xc);*/

public:
ClassDef(R3BOnlineSpectraLosVsSci2, 2)
Expand Down
49 changes: 20 additions & 29 deletions califa/calibration/R3BCalifaCrystalCal2Hit.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include "FairRunAna.h"
#include "FairRuntimeDb.h"

#include "R3BLogger.h"
#include "R3BTGeoPar.h"
#include "TGeoManager.h"
#include "TGeoMatrix.h"
Expand All @@ -40,7 +41,7 @@ R3BCalifaCrystalCal2Hit::R3BCalifaCrystalCal2Hit()
: FairTask("R3B CALIFA CrystalCal to Hit Finder")
, fCrystalCalData(NULL)
, fCalifaHitData(NULL)
, fGeometryVersion(2020) // BARREL+iPhos
, fGeometryVersion(2021) // BARREL+iPhos
, fThreshold(0.) // no threshold
, fDRThreshold(15000) // in keV, for real data (15000 = 15MeV)
, fDeltaPolar(0.25)
Expand All @@ -58,10 +59,9 @@ R3BCalifaCrystalCal2Hit::R3BCalifaCrystalCal2Hit()

R3BCalifaCrystalCal2Hit::~R3BCalifaCrystalCal2Hit()
{
LOG(INFO) << "R3BCalifaCrystalCal2Hit: Delete instance";
R3BLOG(DEBUG1, "");
if (fCalifaHitData)
delete fCalifaHitData;
// do not delete fCalifaGeo. It's a pointer to a static instance
}

void R3BCalifaCrystalCal2Hit::SetParContainers()
Expand All @@ -73,17 +73,12 @@ void R3BCalifaCrystalCal2Hit::SetParContainers()
fTargetGeoPar = (R3BTGeoPar*)rtdb->getContainer("TargetGeoPar");
if (!fCalifaGeoPar || !fTargetGeoPar)
{
if (!fCalifaGeoPar)
LOG(WARNING)
<< "R3BCalifaCrystalCal2Hit::SetParContainers() : Could not get access to CalifaGeoPar container.";

if (!fTargetGeoPar)
LOG(WARNING)
<< "R3BCalifaCrystalCal2Hit::SetParContainers() : Could not get access to TargetGeoPar container.";
R3BLOG_IF(WARNING, !fCalifaGeoPar, "Could not get access to CalifaGeoPar container.");
R3BLOG_IF(WARNING, !fTargetGeoPar, "Could not get access to TargetGeoPar container.");
return;
}
LOG(INFO) << "R3BCalifaCrystalCal2Hit::SetParContainers() : Container CalifaGeoPar found.";
LOG(INFO) << "R3BCalifaCrystalCal2Hit::SetParContainers() : Container TargetGeoPar found.";
R3BLOG(INFO, "Container CalifaGeoPar found.");
R3BLOG(INFO, "Container TargetGeoPar found.");

fTargetPos.SetXYZ(fTargetGeoPar->GetPosX(), fTargetGeoPar->GetPosY(), fTargetGeoPar->GetPosZ());
fCalifaPos.SetXYZ(fCalifaGeoPar->GetPosX(), fCalifaGeoPar->GetPosY(), fCalifaGeoPar->GetPosZ());
Expand All @@ -92,11 +87,11 @@ void R3BCalifaCrystalCal2Hit::SetParContainers()

InitStatus R3BCalifaCrystalCal2Hit::Init()
{
LOG(INFO) << "R3BCalifaCrystalCal2Hit::Init()";
R3BLOG(INFO, "");
assert(!fCalifaHitData); // in case someone calls Init() twice.

FairRootManager* ioManager = FairRootManager::Instance();
if (!ioManager)
LOG(fatal) << "R3BCalifaCrystalCal2Hit::Init() FairRootManager not found";
R3BLOG_IF(fatal, !ioManager, "FairRootManager not found");

fCrystalCalData = (TClonesArray*)ioManager->GetObject("CalifaCrystalCalData");

Expand All @@ -105,18 +100,17 @@ InitStatus R3BCalifaCrystalCal2Hit::Init()
ioManager->Register("CalifaHitData", "CALIFA Hit", fCalifaHitData, !fOnline);

fCalifaGeo = R3BCalifaGeometry::Instance();
if (!fCalifaGeo->Init(fGeometryVersion))
LOG(ERROR) << "R3BCalifaCrystalCal2Hit::Init() Califa geometry not found";
R3BLOG_IF(ERROR, !fCalifaGeo->Init(fGeometryVersion), "Califa geometry not found");

// Determine CALIFA position with respect to target
if (fCalifaGeo->IsSimulation())
{
LOG(INFO) << "R3BCalifaCrystalCal2Hit::Init() simulation configuration.";
R3BLOG(INFO, "Simulation configuration.");
fCalifatoTargetPos = 2.0 * fTargetPos - fCalifaPos;
}
else
{
LOG(INFO) << "R3BCalifaCrystalCal2Hit::Init() analysis configuration.";
R3BLOG(INFO, "Analysis configuration.");
fCalifatoTargetPos = fTargetPos - fCalifaPos;
}

Expand Down Expand Up @@ -213,8 +207,7 @@ void R3BCalifaCrystalCal2Hit::Exec(Option_t* opt)
// ALGORITHMS FOR HIT FINDING
// Nb of CrystalHits in current event
const int numCrystalHits = fCrystalCalData->GetEntries();
LOG(DEBUG) << "R3BCalifaCrystalCal2Hit::Exec(): crystal hits at start: " << numCrystalHits
<< " ********************************";
R3BLOG(DEBUG, "Crystal hits at start:" << numCrystalHits);

if (numCrystalHits)
{
Expand All @@ -239,7 +232,7 @@ void R3BCalifaCrystalCal2Hit::Exec(Option_t* opt)
for (auto& aCalData : TypedCollection<R3BCalifaCrystalCalData>::cast(fCrystalCalData))
crystalId2Pos[aCalData.GetCrystalId()] = &aCalData;

LOG(DEBUG) << "R3BCalifaCrystalCal2Hit::Exec(): crystalId2Pos.size()=" << crystalId2Pos.size();
R3BLOG(DEBUG, "crystalId2Pos.size()=" << crystalId2Pos.size());

for (auto& k1 : crystalId2Pos) // k1: lower id, gamma branch?
if (crystalId2Pos.count(k1.first + fNbCrystalsGammaRange))
Expand All @@ -255,8 +248,7 @@ void R3BCalifaCrystalCal2Hit::Exec(Option_t* opt)
// not a hit where two ranges were hit
addHit(k1.second);
}
LOG(DEBUG) << "R3BCalifaCrystalCal2Hit::Exec(): after uniquifying, we have " << unusedCrystalHits.size()
<< " crystal hits.";
R3BLOG(DEBUG, "after uniquifying, we have " << unusedCrystalHits.size() << " crystal hits.");

unusedCrystalHits.sort(
[](R3BCalifaCrystalCalData* lhs, R3BCalifaCrystalCalData* rhs) { return lhs->GetEnergy() > rhs->GetEnergy(); });
Expand Down Expand Up @@ -295,28 +287,27 @@ void R3BCalifaCrystalCal2Hit::Exec(Option_t* opt)
void R3BCalifaCrystalCal2Hit::Reset()
{
// Clear the CA structure
LOG(DEBUG) << "Clearing CalifaHitData Structure";
R3BLOG(DEBUG, "Clearing CalifaHitData Structure");
if (fCalifaHitData)
fCalifaHitData->Clear();
}

void R3BCalifaCrystalCal2Hit::SelectGeometryVersion(Int_t version)
{
fGeometryVersion = version;
LOG(INFO) << "R3BCalifaCrystalCal2Hit::SelectGeometryVersion to " << fGeometryVersion;
R3BLOG(INFO, "to " << fGeometryVersion);
}

void R3BCalifaCrystalCal2Hit::SetCrystalThreshold(Double_t thresholdEne)
{
fThreshold = thresholdEne;

LOG(INFO) << "R3BCalifaCrystalCal2Hit::SetCrystalThreshold to " << fThreshold << " keV.";
R3BLOG(INFO, "to " << fThreshold << " keV.");
}

void R3BCalifaCrystalCal2Hit::SetDRThreshold(Double_t DRthresholdEne)
{
fDRThreshold = DRthresholdEne;
LOG(INFO) << "R3BCalifaCrystalCal2Hit::SetDRThreshold to " << fDRThreshold << " keV.";
R3BLOG(INFO, "to " << fDRThreshold << " keV.");
}

TVector3 R3BCalifaCrystalCal2Hit::GetAnglesVector(int id) { return fCalifaGeo->GetAngles(id); }
Expand Down
1 change: 1 addition & 0 deletions califa/calibration/R3BCalifaMapped2CrystalCal.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,7 @@ void R3BCalifaMapped2CrystalCal::Exec(Option_t* option)
auto wrts = mappedData[i]->GetWrts();
auto ov = mappedData[i]->GetOverFlow();
auto Tot = mappedData[i]->GetTot();

auto validate_smear = [](uint16_t err_cond, double raw) {
return err_cond ? NAN : raw + gRandom->Rndm() - 0.5;
};
Expand Down
4 changes: 2 additions & 2 deletions califa/pars/R3BCalifaGeometry.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ const TVector3& R3BCalifaGeometry::GetAngles(Int_t iD)
if (iD > fNumCrystals / 2 && iD <= fNumCrystals)
iD = iD - fNumCrystals / 2; // for double reading crystals (crystals from 1 to 2432)

if (iD >= 1 && iD <= 2432)
if (iD >= 1 && iD <= fNumCrystals / 2)
{
nameVolume = GetCrystalVolumePath(iD);

Expand Down Expand Up @@ -174,7 +174,7 @@ const char* R3BCalifaGeometry::GetCrystalVolumePath(Int_t iD)

static char nameVolume[400];

if (iD >= 1 && iD <= 2432)
if (iD >= 1 && iD <= fNumCrystals / 2)
{
if (iD < 33)
{ // First ring in BARREL (single crystal per alveolus)
Expand Down
Loading

0 comments on commit e0a0d5c

Please sign in to comment.