diff --git a/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.cxx b/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.cxx index f915b5a4c75520211d90fc8ce9bd9ba0eb52b91c..c81cf92e66313fe5e181671153841aec356b3f7e 100644 --- a/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.cxx +++ b/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.cxx @@ -35,6 +35,7 @@ #include "CbmTrdTrack.h" #include "CbmTrdTrackFitterKF.h" #include "CbmVertex.h" +#include "FairEventHeader.h" #include "FairRootManager.h" #include "FairTrackParam.h" #include "PParticle.h" @@ -66,6 +67,7 @@ using namespace std; CbmAnaDimuonAnalysis::CbmAnaDimuonAnalysis(TString name, TString setup) : FairTask("AnaDimuonAnalysis") , fEvent(0) + , fEvtHeader() , fMCTracks(NULL) , fStsTracks(NULL) , fStsTrackMatches(NULL) @@ -95,6 +97,7 @@ CbmAnaDimuonAnalysis::CbmAnaDimuonAnalysis(TString name, TString setup) , fNofMuchCut(11) , fNofStsCut(7) , fNofTrdCut(1) + , fFileAnnName("") , // fFileName("histo.root"), // fEffFileName("eff_histo.root"), @@ -141,7 +144,8 @@ InitStatus CbmAnaDimuonAnalysis::Init() fTofHit = (TClonesArray*) fManager->GetObject("TofHit"); if (nullptr == fTofHit) LOG(fatal) << "No TofHit in input"; - fVertex = dynamic_cast<CbmVertex*>(fManager->GetObject("PrimaryVertex.")); + fVertex = dynamic_cast<CbmVertex*>(fManager->GetObject("PrimaryVertex.")); + fEvtHeader = dynamic_cast<FairEventHeader*>(fManager->GetObject("EventHeader.")); fEvent = 0; @@ -485,10 +489,12 @@ InitStatus CbmAnaDimuonAnalysis::Init() gFile = oldFile; gDirectory = oldDir; - if (fNeurons > 0) - fFileAnnName = dir + "/parameters/much/muid_ann_" + std::to_string(fNeurons) + "_" + +fSetupName + "_weights.txt"; - else - fFileAnnName = dir + "/parameters/much/muid_ann_16_sis100_muon_lmvm_weights.txt"; + if (fFileAnnName == "") { + if (fNeurons > 0) + fFileAnnName = dir + "/parameters/much/muid_ann_" + std::to_string(fNeurons) + "_" + +fSetupName + "_weights.txt"; + else + fFileAnnName = dir + "/parameters/much/muid_ann_16_sis100_muon_lmvm_weights.txt"; + } FILE* file = fopen(fFileAnnName.Data(), "r"); char buffer[100]; @@ -690,7 +696,8 @@ void CbmAnaDimuonAnalysis::Exec(Option_t* /*opt*/) if (th) { nTofHits = 1; - Double_t time = th->GetTime(); + //Double_t time = th->GetTime()-1000; + Double_t time = th->GetTime() - fEvtHeader->GetEventTime(); Double_t beta = globalTrack->GetLength() * 0.01 / (time * 1e-9 * TMath::C()); TVector3 momL; @@ -718,6 +725,12 @@ void CbmAnaDimuonAnalysis::Exec(Option_t* /*opt*/) int pdg = TMath::Abs(mcTrack->GetPdgCode()); stsPDG = pdg; if (mcTrack->GetGeantProcessId() == kPPrimary && pdg == 13) { + /* + if (pdg == 13) { + CbmMCTrack* mcTrack = (CbmMCTrack*) fMCTracks->At(stsMcTrackId); + CbmMCTrack* mmct=(CbmMCTrack*)fMCTracks->At(mcTrack->GetMotherId()); + if(TMath::Abs(mmct->GetPdgCode()) != 211 && TMath::Abs(mmct->GetPdgCode()) != 321){ + */ isMu = 1; if (mcTrack->GetCharge() < 0) { muMn_reco.Mu = kTRUE; @@ -765,7 +778,7 @@ void CbmAnaDimuonAnalysis::Exec(Option_t* /*opt*/) } } } - } + } //} } } } diff --git a/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.h b/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.h index 62047558b90aa4de8d7fe7c5c366e58447c1f51c..817e1878dbddc43a02edd79faf7f49dc74d905f9 100644 --- a/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.h +++ b/analysis/PWGDIL/dimuon/CbmAnaDimuonAnalysis.h @@ -14,6 +14,7 @@ #ifndef CBMANADIMUONANALYSIS_H_ #define CBMANADIMUONANALYSIS_H_ 1 +#include "FairEventHeader.h" #include "FairTask.h" #include <vector> @@ -68,6 +69,8 @@ class CbmAnaDimuonAnalysis : public FairTask { void UseCuts(Bool_t cut) { fUseCuts = cut; } void UseMC(Bool_t useMC) { fUseMC = useMC; } + void SetANNFileName(TString name) { fFileAnnName = name; } + // void SetHistoFileName(TString name) {fFileName = name; } // void SetEffFileName(TString name) {fEffFileName = name; } @@ -79,6 +82,7 @@ class CbmAnaDimuonAnalysis : public FairTask { private: Int_t fEvent; + FairEventHeader* fEvtHeader; TClonesArray* fMCTracks; TClonesArray* fStsTracks; TClonesArray* fStsTrackMatches; diff --git a/macro/analysis/much/ANN.C b/macro/analysis/much/ANN.C index 2511797118da29e484d6eceedcd94e0a6bc1c560..3e7422dc3d1a534e4802c86592a8dac62e40a78b 100644 --- a/macro/analysis/much/ANN.C +++ b/macro/analysis/much/ANN.C @@ -12,7 +12,7 @@ // //--------------------------------------------------- -void ANN(Int_t energy = 8, Int_t NofFiles = 1000, TString dir = "../../much/data/", TString setup = "sis100_muon_lmvm", +void ANN(Int_t energy = 10, Int_t NofFiles = 1000, TString dir = "../../much/data/", TString setup = "sis100_muon_lmvm", Int_t ntrain = 300, Int_t neurons = 16) { gStyle->SetCanvasColor(10); @@ -70,9 +70,9 @@ void ANN(Int_t energy = 8, Int_t NofFiles = 1000, TString dir = "../../much/data for (int i = 0; i < 2; i++) { for (int k = 1; k < NofFiles + 1; k++) { if (i == 0) - name.Form("%s/%s/%dgev/omega/%d/muons.ana.root", dir.Data(), setup.Data(), energy, k); + name.Form("%s/%s/auau_%dAGeV/centr/%d/omega.ana.root", dir.Data(), setup.Data(), energy, k); else - name.Form("%s/%s/%dgev/centr/%d/muons.ana.root", dir.Data(), setup.Data(), energy, k); + name.Form("%s/%s/auau_%dAGeV/centr/%d/muons.ana.root", dir.Data(), setup.Data(), energy, k); TFile* f = new TFile(name); if (f->IsZombie() || f->GetNkeys() < 1 || f->TestBit(TFile::kRecovered)) { @@ -191,15 +191,17 @@ void ANN(Int_t energy = 8, Int_t NofFiles = 1000, TString dir = "../../much/data simu->Branch("NofTRD", &NofTRD, "NofTRD/I", 20000000); simu->Branch("type", &type, "type/I", 20000000); + Int_t Max = TMath::Min(Signal->GetEntries(), Bg->GetEntries()); + type = 1; // 1 = signal, 0 = background Int_t i; - for (i = 0; i < Signal->GetEntries(); i++) { + for (i = 0; i < Max; i++) { Signal->GetEntry(i); simu->Fill(); } type = 0; - for (i = 0; i < Bg->GetEntries(); i++) { + for (i = 0; i < Max; i++) { Bg->GetEntry(i); simu->Fill(); } @@ -214,7 +216,7 @@ void ANN(Int_t energy = 8, Int_t NofFiles = 1000, TString dir = "../../much/data mlp->DumpWeights(name); TCanvas* mlpa_canvas = new TCanvas("mlpa_canvas", "Network analysis"); - mlpa_canvas->Divide(2, 2); + mlpa_canvas->Divide(3, 1); TMLPAnalyzer ana(mlp); ana.GatherInformations(); ana.CheckNetwork(); @@ -223,8 +225,8 @@ void ANN(Int_t energy = 8, Int_t NofFiles = 1000, TString dir = "../../much/data mlpa_canvas->cd(2); mlp->Draw(); mlpa_canvas->cd(3); - ana.DrawNetwork(0, "type==1", "type==0"); - mlpa_canvas->cd(4); + //ana.DrawNetwork(0, "type==1", "type==0"); + //mlpa_canvas->cd(4); TH1F* bg = new TH1F("bgh", "NN output", 50, -.5, 1.5); TH1F* sig = new TH1F("sigh", "NN output", 50, -.5, 1.5); @@ -233,7 +235,7 @@ void ANN(Int_t energy = 8, Int_t NofFiles = 1000, TString dir = "../../much/data Double_t params[9]; - for (i = 0; i < Bg->GetEntries(); i++) { + for (i = 0; i < Max; i++) { Bg->GetEntry(i); params[0] = P; params[1] = M; @@ -249,7 +251,7 @@ void ANN(Int_t energy = 8, Int_t NofFiles = 1000, TString dir = "../../much/data bg->Fill(mlp->Evaluate(0, params)); } - for (i = 0; i < Signal->GetEntries(); i++) { + for (i = 0; i < Max; i++) { Signal->GetEntry(i); params[0] = P; params[1] = M; diff --git a/macro/much/run_ana.C b/macro/much/run_ana.C index 368e4974e0bd3331febea89342322c7efe601f57..90f470a6a81c91b22091eacfda2e77c8b3e978d9 100644 --- a/macro/much/run_ana.C +++ b/macro/much/run_ana.C @@ -92,6 +92,8 @@ void run_ana(Int_t nEvents = 1000, TString dataSet = "muons", TString setup = "s ana->SetNofStsCut(7); ana->SetNofTrdCut(1); ana->SetSigmaTofCut(2); + + ana->SetANNFileName("ANN.root"); */ ana->UseCuts(kFALSE); // ana->SetAnnCut(ANN, 5); // if SetAnnCut, than UseCuts(kFALSE) ! @@ -118,5 +120,5 @@ void run_ana(Int_t nEvents = 1000, TString dataSet = "muons", TString setup = "s cout << " Test passed" << endl; cout << " All ok " << endl; - RemoveGeoManager(); + //RemoveGeoManager(); }