Skip to content

Commit

Permalink
New analysis tag v5-03-04-AN
Browse files Browse the repository at this point in the history
  • Loading branch information
morsch committed Mar 3, 2012
2 parents b701962 + 056f0be commit 0d674bf
Show file tree
Hide file tree
Showing 18 changed files with 200 additions and 62 deletions.
8 changes: 6 additions & 2 deletions MFT/AliMFTClusterFinder.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ void AliMFTClusterFinder::StartEvent() {
AliDebug(1, "Starting Event...");

for (Int_t iPlane=0; iPlane<fNPlanes; iPlane++) {
fClustersPerPlane[iPlane]->Clear();
fClustersPerPlane[iPlane]->Delete();
}

AliDebug(1, "... done!");
Expand All @@ -105,11 +105,13 @@ void AliMFTClusterFinder::DigitsToClusters(const TObjArray *pDigitList) {
StartEvent();
Bool_t isDigAvailableForNewCluster = kTRUE;

TClonesArray *myDigitList = 0;

for (Int_t iPlane=0; iPlane<fNPlanes; iPlane++) {

AliDebug(1, Form("Plane %02d", iPlane));

TClonesArray *myDigitList = (TClonesArray*) pDigitList->At(iPlane);
myDigitList = (TClonesArray*) pDigitList->At(iPlane);

AliDebug(1, Form("myDigitList->GetEntries() = %d", myDigitList->GetEntries()));

Expand Down Expand Up @@ -162,6 +164,8 @@ void AliMFTClusterFinder::DigitsToClusters(const TObjArray *pDigitList) {

AliDebug(1, Form("Found %d clusters in plane %02d", fClustersPerPlane[iPlane]->GetEntries(), iPlane));

myDigitList -> Delete();

} // end of cycle over the planes

}
Expand Down
40 changes: 30 additions & 10 deletions MFT/AliMuonForwardTrackAnalysis.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include "TRandom.h"
#include "TLorentzVector.h"
#include "TDatabasePDG.h"
#include "TGraph.h"
#include "AliMuonForwardTrackAnalysis.h"

ClassImp(AliMuonForwardTrackAnalysis)
Expand Down Expand Up @@ -55,21 +56,23 @@ AliMuonForwardTrackAnalysis::AliMuonForwardTrackAnalysis():
fHistOffsetSingleMuonsX_vsPtRapidity(0x0),
fHistOffsetSingleMuonsY_vsPtRapidity(0x0),
fHistSingleMuonsPtRapidity(0x0),
fHistSingleMuonsOffsetChi2(0x0),
fHistWOffsetMuonPairs(0x0),
fHistMassMuonPairs(0x0),
fHistMassMuonPairsWithoutMFT(0x0),
fHistMassMuonPairsMC(0x0),
fHistRapidityPtMuonPairsMC(0x0),
fGraphSingleMuonsOffsetChi2(0x0),
fNMassBins(1000),
fMassMin(0),
fMassMax(10),
fSingleMuonAnalysis(1),
fMuonPairAnalysis(1),
fMatchTrigger(0),
fOption(0),
fXVertResMC(150.e-4),
fYVertResMC(150.e-4),
fZVertResMC(100.e-4),
fXVertResMC(50.e-4),
fYVertResMC(50.e-4),
fZVertResMC(50.e-4),
fMaxNWrongClustersMC(999),
fPtMinSingleMuons(0)
{
Expand Down Expand Up @@ -163,7 +166,7 @@ Bool_t AliMuonForwardTrackAnalysis::AnalyzeSingleMuon() {

if (fNTracksAnalyzedOfEvent>=fNTracksOfEvent) return kFALSE;

fMFTTrack = (AliMuonForwardTrack*) fMuonForwardTracks->At(fNTracksAnalyzedOfEvent);
fMFTTrack = (AliMuonForwardTrack*) fMuonForwardTracks->At(fNTracksAnalyzedOfEvent);
fNTracksAnalyzedOfEvent++;
if (fMatchTrigger && !fMFTTrack->GetMatchTrigger()) return kTRUE;
fMCRefTrack = fMFTTrack->GetMCTrackRef();
Expand All @@ -172,7 +175,9 @@ Bool_t AliMuonForwardTrackAnalysis::AnalyzeSingleMuon() {
if (fMFTTrack->GetNWrongClustersMC()>fMaxNWrongClustersMC) return kTRUE;

Double_t xOrig=gRandom->Gaus(0., fXVertResMC);
Double_t yOrig=gRandom->Gaus(0., fXVertResMC);
Double_t yOrig=gRandom->Gaus(0., fYVertResMC);
// Double_t xOrig = 0.;
// Double_t yOrig = 0.;
Double_t zOrig=gRandom->Gaus(0., fZVertResMC);

AliMUONTrackParam *param = fMFTTrack->GetTrackParamAtMFTCluster(0);
Expand Down Expand Up @@ -208,9 +213,12 @@ Bool_t AliMuonForwardTrackAnalysis::AnalyzeSingleMuon() {
fHistOffsetSingleMuonsX_tmp[rapBin-1][ptBin-1]->Fill(1.e4*dX);
fHistOffsetSingleMuonsY_tmp[rapBin-1][ptBin-1]->Fill(1.e4*dY);
}
fHistSingleMuonsPtRapidity -> Fill(pMu.Rapidity(), pMu.Pt());
fHistOffsetSingleMuons -> Fill(1.e4*offset);
fHistWOffsetSingleMuons -> Fill(weightedOffset);
fHistSingleMuonsPtRapidity -> Fill(pMu.Rapidity(), pMu.Pt());
fHistOffsetSingleMuons -> Fill(1.e4*offset);
fHistWOffsetSingleMuons -> Fill(weightedOffset);
Double_t chi2OverNdf = fMFTTrack->GetGlobalChi2()/Double_t(fMFTTrack->GetNMFTClusters()+fMFTTrack->GetNMUONClusters());
fHistSingleMuonsOffsetChi2 -> Fill(1.e4*offset, chi2OverNdf);
fGraphSingleMuonsOffsetChi2 -> SetPoint(fGraphSingleMuonsOffsetChi2->GetN(),1.e4*offset, chi2OverNdf);

fNTracksAnalyzed++;

Expand All @@ -232,7 +240,7 @@ Bool_t AliMuonForwardTrackAnalysis::AnalyzeMuonPair() {
}

Double_t xOrig=gRandom->Gaus(0., fXVertResMC);
Double_t yOrig=gRandom->Gaus(0., fXVertResMC);
Double_t yOrig=gRandom->Gaus(0., fYVertResMC);
Double_t zOrig=gRandom->Gaus(0., fZVertResMC);
AliDebug(1, Form("origin = (%f, %f, %f)", xOrig, yOrig, zOrig));

Expand Down Expand Up @@ -322,6 +330,9 @@ void AliMuonForwardTrackAnalysis::Terminate(Char_t *outputFileName) {
// }

fHistSingleMuonsPtRapidity -> Write();
fHistSingleMuonsOffsetChi2 -> Write();

fGraphSingleMuonsOffsetChi2 -> Write();

fHistWOffsetMuonPairs -> Write();
fHistMassMuonPairs -> Write();
Expand All @@ -341,7 +352,7 @@ void AliMuonForwardTrackAnalysis::BookHistos() {
fHistOffsetSingleMuonsY = new TH1D("fHistOffsetSingleMuonsY", "Offset for single muons along Y", 200, -1000, 1000);
fHistErrorSingleMuonsX = new TH1D("fHistErrorSingleMuonsX", "Coordinate Error for single muons along X", 200, 0, 1000);
fHistErrorSingleMuonsY = new TH1D("fHistErrorSingleMuonsY", "Coordinate Error for single muons along Y", 200, 0, 1000);
fHistOffsetSingleMuons = new TH1D("fHistOffsetSingleMuons", "Offset for single muons", 100, 0, 2000);
fHistOffsetSingleMuons = new TH1D("fHistOffsetSingleMuons", "Offset for single muons", 200, 0, 2000);
fHistWOffsetSingleMuons = new TH1D("fHistWOffsetSingleMuons", "Weighted Offset for single muons", 300, 0, 15);

fHistOffsetSingleMuonsX_vsPtRapidity = new TH2D("fHistOffsetSingleMuonsX_vsPtRapidity", "Offset for single muons along X",
Expand All @@ -357,6 +368,7 @@ void AliMuonForwardTrackAnalysis::BookHistos() {
}

fHistSingleMuonsPtRapidity = new TH2D("fHistSingleMuonsPtRapidity", "Phase Space for single muons", 10, -4, -2.5, 10, 0.5, 5.5);
fHistSingleMuonsOffsetChi2 = new TH2D("fHistSingleMuonsOffsetChi2", "Offset vs #chi^{2}/ndf for single muons", 400, 0, 4000, 100, 0, 20);

fHistOffsetSingleMuonsX -> SetXTitle("Offset(X) [#mum]");
fHistOffsetSingleMuonsY -> SetXTitle("Offset(Y) [#mum]");
Expand All @@ -372,6 +384,8 @@ void AliMuonForwardTrackAnalysis::BookHistos() {

fHistSingleMuonsPtRapidity -> SetXTitle("y^{#mu}");
fHistSingleMuonsPtRapidity -> SetYTitle("p_{T}^{#mu} [GeV/c]");
fHistSingleMuonsOffsetChi2 -> SetXTitle("Offset [#mum]");
fHistSingleMuonsOffsetChi2 -> SetYTitle("#chi^{2}/ndf");

fHistOffsetSingleMuonsX -> Sumw2();
fHistOffsetSingleMuonsY -> Sumw2();
Expand All @@ -383,9 +397,15 @@ void AliMuonForwardTrackAnalysis::BookHistos() {
fHistOffsetSingleMuonsX_vsPtRapidity -> Sumw2();
fHistOffsetSingleMuonsY_vsPtRapidity -> Sumw2();
fHistSingleMuonsPtRapidity -> Sumw2();
fHistSingleMuonsOffsetChi2 -> Sumw2();

//--------------------------------------------

fGraphSingleMuonsOffsetChi2 = new TGraph("fGraphSingleMuonsOffsetChi2");
fGraphSingleMuonsOffsetChi2 -> SetName("fGraphSingleMuonsOffsetChi2");

//--------------------------------------------

fHistWOffsetMuonPairs = new TH1D("fHistWOffsetMuonPairs", "Weighted Offset for Muon Pairs", 300, 0, 60);
fHistMassMuonPairs = new TH1D("fHistMassMuonPairs", "Dimuon Mass (MUON+MFT)", fNMassBins, fMassMin, fMassMax);
fHistMassMuonPairsWithoutMFT = new TH1D("fHistMassMuonPairsWithoutMFT", "Dimuon Mass (MUON only)", fNMassBins, fMassMin, fMassMax);
Expand Down
4 changes: 4 additions & 0 deletions MFT/AliMuonForwardTrackAnalysis.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include "AliMUONTrackParam.h"
#include "AliMUONTrackExtrap.h"
#include "TDatabasePDG.h"
#include "TGraph.h"

//====================================================================================================================================================

Expand Down Expand Up @@ -86,9 +87,12 @@ class AliMuonForwardTrackAnalysis : public TObject {
TH2D *fHistOffsetSingleMuonsX_vsPtRapidity, *fHistOffsetSingleMuonsY_vsPtRapidity, *fHistSingleMuonsPtRapidity; //!
TH1D *fHistOffsetSingleMuonsX_tmp[fNRapBinsOffsetSingleMuons][fNPtBinsOffsetSingleMuons]; //!
TH1D *fHistOffsetSingleMuonsY_tmp[fNRapBinsOffsetSingleMuons][fNPtBinsOffsetSingleMuons]; //!
TH2D *fHistSingleMuonsOffsetChi2; //!
TH1D *fHistWOffsetMuonPairs, *fHistMassMuonPairs, *fHistMassMuonPairsWithoutMFT, *fHistMassMuonPairsMC; //!
TH2D *fHistRapidityPtMuonPairsMC;

TGraph *fGraphSingleMuonsOffsetChi2; //!

Int_t fNMassBins;
Double_t fMassMin, fMassMax;

Expand Down
7 changes: 5 additions & 2 deletions MFT/AliMuonForwardTrackFinder.C
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//================================================================================================================================

void AliMuonForwardTrackFinder(Int_t run=0,
Double_t zVertexError=0.010,
Int_t matching=0,
const Char_t *readDir= ".",
const Char_t *outDir = ".",
Expand All @@ -25,9 +26,11 @@ void AliMuonForwardTrackFinder(Int_t run=0,
// finder -> SetRAbsorberCut(26.4);
finder -> SetLowPtCut(0.0);
// finder -> SetLowPtCut(0.5);
finder -> SetVertexError(0.015, 0.015, 0.010);
finder -> SetVertexError(0.015, 0.015, zVertexError);
finder -> SetMatchingMode(matching); // 0 -> real matching 1 -> ideal matching
finder -> SetMinResearchRadiusAtLastPlane(0.0);
// finder -> SetMinResearchRadiusAtPlane(4, 0.0);
finder -> SetMinResearchRadiusAtPlane(4, 0.50);
finder -> SetMinResearchRadiusAtPlane(3, 0.05);

while (finder->LoadNextTrack()) continue;

Expand Down
19 changes: 10 additions & 9 deletions MFT/AliMuonForwardTrackFinder.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,6 @@ AliMuonForwardTrackFinder::AliMuonForwardTrackFinder():
fOutputEventTree(0),
fMuonForwardTracks(0),
fMatchingMode(-1),
fMinResearchRadiusAtLastPlane(0),
fGRPData(0),
fRunInfo(0)

Expand Down Expand Up @@ -192,6 +191,8 @@ AliMuonForwardTrackFinder::AliMuonForwardTrackFinder():

fIsPlaneMandatory[iPlane] = kFALSE;

fMinResearchRadiusAtPlane[iPlane] = 0.;

}

// fNextTrack = 0;
Expand Down Expand Up @@ -435,7 +436,7 @@ Bool_t AliMuonForwardTrackFinder::LoadNextEvent() {
fRunLoader -> LoadKinematics();
fStack = fRunLoader->Stack();
fNextTrack = fTrackStore->CreateIterator();
fMuonForwardTracks->Clear();
fMuonForwardTracks->Delete();

fEv++;

Expand Down Expand Up @@ -467,7 +468,7 @@ Int_t AliMuonForwardTrackFinder::LoadNextTrack() {

fCountRealTracksAnalyzed++;

fCandidateTracks -> Clear();
fCandidateTracks -> Delete();

fLabelMC = -1;
fDistanceFromGoodClusterAndTrackAtLastPlane = -1.;
Expand Down Expand Up @@ -600,7 +601,7 @@ Int_t AliMuonForwardTrackFinder::LoadNextTrack() {
AliMuonForwardTrack *newTrack = (AliMuonForwardTrack*) fCandidateTracks->UncheckedAt(0);
new ((*fMuonForwardTracks)[fMuonForwardTracks->GetEntries()]) AliMuonForwardTrack(*newTrack);
AliDebug(1, "...track added!\n");
fCandidateTracks->Clear();
fCandidateTracks->Delete();
fCountRealTracksAnalyzedOfEvent++;
fCountRealTracksAnalyzedWithFinalCandidates++;
PrintParticleHistory();
Expand Down Expand Up @@ -783,7 +784,7 @@ Int_t AliMuonForwardTrackFinder::LoadNextTrack() {

// -------------------------------------------------------------------------------------------

fCandidateTracks->Clear();
fCandidateTracks->Delete();
fFinalBestCandidate = NULL;

fCountRealTracksAnalyzedOfEvent++;
Expand Down Expand Up @@ -853,8 +854,8 @@ void AliMuonForwardTrackFinder::FindClusterInPlane(Int_t planeId) {

Double_t researchRadiusFront = TMath::Sqrt(squaredError_X_Front + squaredError_Y_Front);
Double_t researchRadiusBack = TMath::Sqrt(squaredError_X_Back + squaredError_Y_Back);
if (planeId==fNPlanesMFT-1 && 0.5*(researchRadiusFront+researchRadiusBack)<fMinResearchRadiusAtLastPlane) {
corrFact = fMinResearchRadiusAtLastPlane/(0.5*(researchRadiusFront+researchRadiusBack));
if (0.5*(researchRadiusFront+researchRadiusBack)<fMinResearchRadiusAtPlane[planeId]) {
corrFact = fMinResearchRadiusAtPlane[planeId]/(0.5*(researchRadiusFront+researchRadiusBack));
}
if (fIsCurrentMuonTrackable) {
// fOutputQAFile->cd();
Expand Down Expand Up @@ -1157,8 +1158,8 @@ Double_t AliMuonForwardTrackFinder::TryOneCluster(const AliMUONTrackParam &track
void AliMuonForwardTrackFinder::SeparateFrontBackClusters() {

for (Int_t iPlane=0; iPlane<fNPlanesMFT; iPlane++) {
fMFTClusterArrayFront[iPlane]->Clear();
fMFTClusterArrayBack[iPlane] ->Clear();
fMFTClusterArrayFront[iPlane]->Delete();
fMFTClusterArrayBack[iPlane] ->Delete();
for (Int_t iCluster=0; iCluster<fMFTClusterArray[iPlane]->GetEntries(); iCluster++) {
AliMFTCluster *cluster = (AliMFTCluster*) fMFTClusterArray[iPlane]->At(iCluster);
if (TMath::Abs(cluster->GetZ())<TMath::Abs(fSegmentation->GetPlane(iPlane)->GetZCenter())) {
Expand Down
4 changes: 2 additions & 2 deletions MFT/AliMuonForwardTrackFinder.h
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ class AliMuonForwardTrackFinder : public TObject {
Bool_t IsMother(const Char_t *nameMother);

void SetMatchingMode(Int_t matchingMode) { fMatchingMode = matchingMode; }
void SetMinResearchRadiusAtLastPlane(Double_t minResearchRadius) { fMinResearchRadiusAtLastPlane = minResearchRadius; }
void SetMinResearchRadiusAtPlane(Int_t plane, Double_t radius) { if (plane>=0 && plane<fNMaxPlanes) fMinResearchRadiusAtPlane[plane] = radius; }

void FillOutputTree();
void WriteOutputTree();
Expand Down Expand Up @@ -250,7 +250,7 @@ class AliMuonForwardTrackFinder : public TObject {
TClonesArray *fMuonForwardTracks; //! array of AliMuonForwardTrack

Int_t fMatchingMode;
Double_t fMinResearchRadiusAtLastPlane;
Double_t fMinResearchRadiusAtPlane[fNMaxPlanes];

AliGRPObject *fGRPData; //! Data from the GRP/GRP/Data CDB folder
AliRunInfo *fRunInfo; //!
Expand Down
34 changes: 28 additions & 6 deletions MFT/Config.C
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@

enum PDCProc_t {kGenBox,
kGenMuonLMR,
kGenParamJpsi,
kGenPionKaon,
kGenCorrHF,
kPythia6,
Expand All @@ -54,6 +55,7 @@ enum PDCProc_t {kGenBox,

const Char_t* pprRunName[] = {"kGenBox",
"kGenMuonLMR",
"kGenParamJpsi",
"kGenPionKaon",
"kGenCorrHF",
"kPythia6",
Expand Down Expand Up @@ -155,6 +157,7 @@ void Config() {
else if (proc == kHijing2500Cocktail) gener = Hijing2500Cocktail();
else if (proc == kGenBox) gener = GenBox();
else if (proc == kGenMuonLMR) gener = GenMuonLMR();
else if (proc == kGenParamJpsi) gener = GenParamJpsi();
else if (proc == kGenCorrHF) gener = GenCorrHF();
else if (proc == kGenPionKaon) gener = GenParamPionKaon();

Expand Down Expand Up @@ -280,15 +283,34 @@ AliGenerator* GenMuonLMR() {
AliGenMUONLMR *gener = new AliGenMUONLMR();
gener->SetMomentumRange(0,999);
gener->SetPtRange(0,100.);
gener->SetPhiRange(0., 360.);
gener->SetThetaRange(0., 180.);
gener->SetChildThetaRange(170.0,179.0);
gener->SetYRange(-4.5, -2.0);
gener->SetYRange(-4.0, -2.5);
gener->SetChildThetaRange(171.0,177.0);
gener->SetChildMomentumRange(5.0, 999.);
gener->SetOrigin(0.0, 0.0, 0.0); // vertex position
gener->SetSigma(0.0, 0.0, 0.0); // vertex position smearing
gener->SetVertexSmear(kPerEvent);
enum {kEta2Body, kEtaDalitz, kRho2Body, kOmega2Body, kOmegaDalitz, kPhi2Body, kEtaPrimeDalitz, kPionLMR, kKaonLMR};
gener->GenerateSingleProcess(kPhi2Body, 500);
gener->GenerateSingleProcess(kPhi2Body, 10);
gener->SetCutOnChild(1);

return gener;

}

//====================================================================================================================================================

AliGenerator* GenParamJpsi() {

AliGenParam *gener = new AliGenParam(5, AliGenMUONlib::kJpsi);
gener->SetMomentumRange(0,999);
gener->SetPtRange(0,100.);
gener->SetYRange(-4.0, -2.5);
gener->SetPhiRange(0., 360.);
gener->SetChildThetaRange(171.0,177.0);
gener->SetChildMomentumRange(5.0, 999.);
gener->SetOrigin(0.0, 0.0, 0.0); // vertex position
gener->SetSigma(0.0, 0.0, 0.0); // Sigma in (X,Y,Z) (cm) on IP position
gener->SetForceDecay(kDiMuon);
gener->SetTrackingFlag(1);
gener->SetCutOnChild(1);

return gener;
Expand Down
7 changes: 7 additions & 0 deletions STEER/AOD/AliAODEvent.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -426,6 +426,8 @@ void AliAODEvent::ResetStd(Int_t trkArrSize,
{
// deletes content of standard arrays and resets size
// The line below added to avoid very costly and un-needed TROOT::RecursiveRemove (A.G.)

Bool_t mustClean = gROOT->MustClean();
gROOT->SetMustClean(kFALSE);
if (fTracks) {
fTracks->Delete();
Expand Down Expand Up @@ -483,11 +485,15 @@ void AliAODEvent::ResetStd(Int_t trkArrSize,
fEMCALTrigger->DeAllocate();
if (fPHOSTrigger)
fPHOSTrigger->DeAllocate();

gROOT->SetMustClean(mustClean);
}

void AliAODEvent::ClearStd()
{
// clears the standard arrays
Bool_t mustClean = gROOT->MustClean();
gROOT->SetMustClean(kFALSE);
if (fHeader)
fHeader ->Clear();
if (fTracks)
Expand Down Expand Up @@ -519,6 +525,7 @@ void AliAODEvent::ClearStd()
fEMCALTrigger->DeAllocate();
if (fPHOSTrigger)
fPHOSTrigger->DeAllocate();
gROOT->SetMustClean(mustClean);
}

//_________________________________________________________________
Expand Down
Loading

0 comments on commit 0d674bf

Please sign in to comment.