Skip to content

Commit d44224a

Browse files
authored
Merge pull request #5 from rest-for-physics/cris_hitsupdates
TRestTrackAnalysisProcess: new gaussian observables added
2 parents 4467db8 + 587d68e commit d44224a

File tree

1 file changed

+66
-22
lines changed

1 file changed

+66
-22
lines changed

src/TRestTrackAnalysisProcess.cxx

Lines changed: 66 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@
4141
///
4242
/// Maximum Second Track Energy observables:
4343
///
44-
/// * **SecondTrackMaxEnergy**: Energy of the second most energetic track in the event with X,Y,Z
44+
/// * **SecondMaxTrackEnergy**: Energy of the second most energetic track in the event with X,Y,Z
4545
/// coordinates.
46-
/// * **SecondTrackMaxEnergy_X**: Energy of the second most energetic track in the event with X,Z
46+
/// * **SecondMaxTrackEnergy_X**: Energy of the second most energetic track in the event with X,Z
4747
/// coordinates.
48-
/// * **SecondTrackMaxEnergy_Y**: Energy of the second most energetic track in the event with Y,Z
48+
/// * **SecondMaxTrackEnergy_Y**: Energy of the second most energetic track in the event with Y,Z
4949
/// coordinates.
5050
///
5151
/// Track Length observables:
@@ -126,10 +126,24 @@
126126
/// * **MaxTrackSigmaY**: The cluster size in Y of the main most energetic track.
127127
/// * **MaxTrack_XZ_SigmaX**: The cluster size in X of the main most energetic track in XZ projection.
128128
/// * **MaxTrack_YZ_SigmaY**: The cluster size in Y of the main most energetic track in YZ projection.
129-
/// * **SecondTrackMaxSigmaX**: The cluster size in X of the second most energetic track.
130-
/// * **SecondTrackMaxSigmaY**: The cluster size in Y of the second most energetic track.
131-
/// * **SecondTrackMax_XZ_SigmaX**: The cluster size in X of the second most energetic track in XZ projection.
132-
/// * **SecondTrackMax_YZ_SigmaY**: The cluster size in Y of the second most energetic track in YZ projection.
129+
/// * **MaxTrackxySigmaBalanceGaus**: (gausSigma_x-gausSigma_y)/(gausSigma_x+gausSigma_y).
130+
/// * **SecondMaxTrackSigmaX**: The cluster size in X of the second most energetic track.
131+
/// * **SecondMaxTrackSigmaY**: The cluster size in Y of the second most energetic track.
132+
/// * **SecondMaxTrack_XZ_SigmaX**: The cluster size in X of the second most energetic track in XZ projection.
133+
/// * **SecondMaxTrack_YZ_SigmaY**: The cluster size in Y of the second most energetic track in YZ projection.
134+
/// * **SecondMaxTrackxySigmaBalanceGaus**: (secondGausSigma_x-secondGausSigma_y)/(secondGausSigma_x+secondGausSigma_y).
135+
///
136+
/// The gaussian sigma parameter measures the cluster size obtained from the fit to a gaussian of a given
137+
/// track hits.
138+
///
139+
/// * **MaxTrackGaussSigmaX**: The cluster size in X of the main most energetic track.
140+
/// * **MaxTrackGaussSigmaY**: The cluster size in Y of the main most energetic track.
141+
/// * **MaxTrack_XZ_GaussSigmaX**: The cluster size in X of the main most energetic track in XZ projection.
142+
/// * **MaxTrack_YZ_GaussSigmaY**: The cluster size in Y of the main most energetic track in YZ projection.
143+
/// * **SecondMaxTrackGaussSigmaX**: The cluster size in X of the second most energetic track.
144+
/// * **SecondMaxTrackGaussSigmaY**: The cluster size in Y of the second most energetic track.
145+
/// * **SecondMaxTrack_XZ_GaussSigmaX**: The cluster size in X of the second most energetic track in XZ projection.
146+
/// * **SecondMaxTrack_YZ_GaussSigmaY**: The cluster size in Y of the second most energetic track in YZ projection.
133147
///
134148
/// Time observables:
135149
///
@@ -841,80 +855,110 @@ TRestEvent* TRestTrackAnalysisProcess::ProcessEvent(TRestEvent* evInput) {
841855
Double_t tckMaxXYZ_SigmaX = 0, tckMaxXYZ_SigmaY = 0;
842856
Double_t tckMaxXZ_SigmaX = 0;
843857
Double_t tckMaxYZ_SigmaY = 0;
858+
Double_t tckMaxXYZ_gausSigmaX = 0, tckMaxXYZ_gausSigmaY = 0;
859+
Double_t tckMaxXZ_gausSigmaX = 0;
860+
Double_t tckMaxYZ_gausSigmaY = 0;
844861

845862
if (fInputTrackEvent->GetMaxEnergyTrack()) {
846863
tckMaxEnXYZ = fInputTrackEvent->GetMaxEnergyTrack()->GetEnergy();
847864
tckMaxXYZ_SigmaX = fInputTrackEvent->GetMaxEnergyTrack()->GetHits()->GetSigmaX();
848865
tckMaxXYZ_SigmaY = fInputTrackEvent->GetMaxEnergyTrack()->GetHits()->GetSigmaY();
849866
debug << "id: " << fInputTrackEvent->GetID() << " " << fInputTrackEvent->GetSubEventTag()
850867
<< " tckMaxEnXYZ: " << tckMaxEnXYZ << endl;
868+
tckMaxXYZ_gausSigmaX = fInputTrackEvent->GetMaxEnergyTrack()->GetHits()->GetGaussSigmaX();
869+
tckMaxXYZ_gausSigmaY = fInputTrackEvent->GetMaxEnergyTrack()->GetHits()->GetGaussSigmaY();
851870
}
852871

853-
SetObservableValue((string) "MaxTrackEnergy", tckMaxEnXYZ);
854872
SetObservableValue((string) "MaxTrackSigmaX", tckMaxXYZ_SigmaX);
855873
SetObservableValue((string) "MaxTrackSigmaY", tckMaxXYZ_SigmaY);
874+
SetObservableValue((string) "MaxTrackGaussSigmaX", tckMaxXYZ_gausSigmaX);
875+
SetObservableValue((string) "MaxTrackGaussSigmaY", tckMaxXYZ_gausSigmaY);
856876

857877
if (fInputTrackEvent->GetMaxEnergyTrack("X")) {
858878
tckMaxEnX = fInputTrackEvent->GetMaxEnergyTrack("X")->GetEnergy();
859879
tckMaxXZ_SigmaX = fInputTrackEvent->GetMaxEnergyTrack("X")->GetHits()->GetSigmaX();
880+
tckMaxXZ_gausSigmaX = fInputTrackEvent->GetMaxEnergyTrack("X")->GetHits()->GetGaussSigmaX();
860881
debug << "id: " << fInputTrackEvent->GetID() << " " << fInputTrackEvent->GetSubEventTag()
861882
<< " tckMaxEnX: " << tckMaxEnX << endl;
862883
}
863884

864885
SetObservableValue((string) "MaxTrackEnergy_X", tckMaxEnX);
865886
SetObservableValue((string) "MaxTrack_XZ_SigmaX", tckMaxXZ_SigmaX);
887+
SetObservableValue((string) "MaxTrack_XZ_GaussSigmaX", tckMaxXZ_gausSigmaX);
866888

867889
if (fInputTrackEvent->GetMaxEnergyTrack("Y")) {
868890
tckMaxEnY = fInputTrackEvent->GetMaxEnergyTrack("Y")->GetEnergy();
869891
tckMaxYZ_SigmaY = fInputTrackEvent->GetMaxEnergyTrack("Y")->GetHits()->GetSigmaY();
892+
tckMaxYZ_gausSigmaY = fInputTrackEvent->GetMaxEnergyTrack("Y")->GetHits()->GetGaussSigmaY();
870893
debug << "id: " << fInputTrackEvent->GetID() << " " << fInputTrackEvent->GetSubEventTag()
871894
<< " tckMaxEnY: " << tckMaxEnY << endl;
872895
}
873896

874897
SetObservableValue((string) "MaxTrackEnergy_Y", tckMaxEnY);
875898
SetObservableValue((string) "MaxTrack_YZ_SigmaY", tckMaxYZ_SigmaY);
899+
SetObservableValue((string) "MaxTrack_YZ_GaussSigmaY", tckMaxYZ_gausSigmaY);
900+
901+
SetObservableValue("MaxTrackxy2SigmaGaus", (tckMaxXZ_gausSigmaX * tckMaxXZ_gausSigmaX) + (tckMaxYZ_gausSigmaY * tckMaxYZ_gausSigmaY));
902+
SetObservableValue("MaxTrackxySigmaBalanceGaus", (tckMaxXZ_gausSigmaX - tckMaxYZ_gausSigmaY) / (tckMaxXZ_gausSigmaX + tckMaxYZ_gausSigmaY));
876903

877904
Double_t tckMaxEnergy = tckMaxEnX + tckMaxEnY + tckMaxEnXYZ;
878905

879906
Double_t totalEnergy = fInputTrackEvent->GetEnergy();
880907

881908
Double_t trackEnergyRatio = (totalEnergy - tckMaxEnergy) / totalEnergy;
882909

910+
SetObservableValue((string) "MaxTrackEnergy", tckMaxEnergy);
883911
SetObservableValue((string) "MaxTrackEnergyRatio", trackEnergyRatio);
884912
/* }}} */
885913

886-
/* {{{ Maximum Second Track Energy observable */
887-
Double_t maxSecondTrackEnergy = 0;
914+
/* {{{ Second Maximum Track Energy observable */
915+
Double_t tckSecondMaxEnergy = 0;
888916
Double_t tckSecondMaxXYZ_SigmaX = 0, tckSecondMaxXYZ_SigmaY = 0;
917+
Double_t tckSecondMaxXYZ_gausSigmaX = 0, tckSecondMaxXYZ_gausSigmaY = 0;
889918
if (fInputTrackEvent->GetSecondMaxEnergyTrack() != NULL) {
890919
tckSecondMaxXYZ_SigmaX = fInputTrackEvent->GetSecondMaxEnergyTrack()->GetHits()->GetSigmaX();
891920
tckSecondMaxXYZ_SigmaY = fInputTrackEvent->GetSecondMaxEnergyTrack()->GetHits()->GetSigmaY();
892-
maxSecondTrackEnergy = fInputTrackEvent->GetSecondMaxEnergyTrack()->GetEnergy();
921+
tckSecondMaxXYZ_gausSigmaX = fInputTrackEvent->GetSecondMaxEnergyTrack()->GetHits()->GetGaussSigmaX();
922+
tckSecondMaxXYZ_gausSigmaY = fInputTrackEvent->GetSecondMaxEnergyTrack()->GetHits()->GetGaussSigmaY();
923+
tckSecondMaxEnergy = fInputTrackEvent->GetSecondMaxEnergyTrack()->GetEnergy();
893924
}
894925

895-
Double_t maxSecondTrackEnergy_X = 0;
926+
Double_t tckSecondMaxEnergy_X = 0;
896927
Double_t tckSecondMaxXZ_SigmaX = 0;
928+
Double_t tckSecondMaxXZ_gausSigmaX = 0;
897929
if (fInputTrackEvent->GetSecondMaxEnergyTrack("X") != NULL) {
898930
tckSecondMaxXZ_SigmaX = fInputTrackEvent->GetSecondMaxEnergyTrack("X")->GetHits()->GetSigmaX();
899-
maxSecondTrackEnergy_X = fInputTrackEvent->GetSecondMaxEnergyTrack("X")->GetEnergy();
931+
tckSecondMaxEnergy_X = fInputTrackEvent->GetSecondMaxEnergyTrack("X")->GetEnergy();
932+
tckSecondMaxXZ_gausSigmaX = fInputTrackEvent->GetSecondMaxEnergyTrack("X")->GetHits()->GetGaussSigmaX();
900933
}
901934

902-
Double_t maxSecondTrackEnergy_Y = 0;
935+
Double_t tckSecondMaxEnergy_Y = 0;
903936
Double_t tckSecondMaxYZ_SigmaY = 0;
937+
Double_t tckSecondMaxYZ_gausSigmaY = 0;
904938
if (fInputTrackEvent->GetSecondMaxEnergyTrack("Y") != NULL) {
905939
tckSecondMaxYZ_SigmaY = fInputTrackEvent->GetSecondMaxEnergyTrack("Y")->GetHits()->GetSigmaY();
906-
maxSecondTrackEnergy_Y = fInputTrackEvent->GetSecondMaxEnergyTrack("Y")->GetEnergy();
940+
tckSecondMaxEnergy_Y = fInputTrackEvent->GetSecondMaxEnergyTrack("Y")->GetEnergy();
941+
tckSecondMaxYZ_gausSigmaY = fInputTrackEvent->GetSecondMaxEnergyTrack("Y")->GetHits()->GetGaussSigmaY();
907942
}
908943

909-
SetObservableValue((string) "SecondTrackMaxEnergy", maxSecondTrackEnergy);
910-
SetObservableValue((string) "SecondTrackMaxSigmaX", tckSecondMaxXYZ_SigmaX);
911-
SetObservableValue((string) "SecondTrackMaxSigmaY", tckSecondMaxXYZ_SigmaY);
944+
Double_t trackSecondMaxEnergy = tckSecondMaxEnergy_X + tckSecondMaxEnergy_Y;
945+
946+
SetObservableValue((string) "SecondMaxTrackEnergy", trackSecondMaxEnergy);
947+
SetObservableValue((string) "SecondMaxTrackSigmaX", tckSecondMaxXYZ_SigmaX);
948+
SetObservableValue((string) "SecondMaxTrackSigmaY", tckSecondMaxXYZ_SigmaY);
949+
SetObservableValue((string) "SecondMaxTrackGaussSigmaX", tckSecondMaxXYZ_gausSigmaX);
950+
SetObservableValue((string) "SecondMaxTrackGaussSigmaY", tckSecondMaxXYZ_gausSigmaY);
951+
952+
SetObservableValue((string) "SecondMaxTrackEnergy_X", tckSecondMaxEnergy_X);
953+
SetObservableValue((string) "SecondMaxTrack_XZ_SigmaX", tckSecondMaxXZ_SigmaX);
954+
SetObservableValue((string) "SecondMaxTrack_XZ_GaussSigmaX", tckSecondMaxXZ_gausSigmaX);
912955

913-
SetObservableValue((string) "SecondTrackMaxEnergy_X", maxSecondTrackEnergy_X);
914-
SetObservableValue((string) "SecondTrackMax_XZ_SigmaX", tckSecondMaxXZ_SigmaX);
956+
SetObservableValue((string) "SecondMaxTrackEnergy_Y", tckSecondMaxEnergy_Y);
957+
SetObservableValue((string) "SecondMaxTrack_YZ_SigmaY", tckSecondMaxYZ_SigmaY);
958+
SetObservableValue((string) "SecondMaxTrack_YZ_GaussSigmaY", tckSecondMaxYZ_gausSigmaY);
915959

916-
SetObservableValue((string) "SecondTrackMaxEnergy_Y", maxSecondTrackEnergy_Y);
917-
SetObservableValue((string) "SecondTrackMax_YZ_SigmaY", tckSecondMaxYZ_SigmaY);
960+
SetObservableValue("SecondMaxTrackxy2SigmaGaus", (tckSecondMaxXZ_gausSigmaX * tckSecondMaxXZ_gausSigmaX) + (tckSecondMaxYZ_gausSigmaY * tckSecondMaxYZ_gausSigmaY));
961+
SetObservableValue("SecondMaxTrackxySigmaBalanceGaus", (tckSecondMaxXZ_gausSigmaX - tckSecondMaxYZ_gausSigmaY) / (tckSecondMaxXZ_gausSigmaX + tckSecondMaxYZ_gausSigmaY));
918962
/* }}} */
919963

920964
/* {{{ Track Length observables (MaxTrackLength_XX) */

0 commit comments

Comments
 (0)